mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
Merge pull request #2574 from cheahjs/feat/oauth
feat: experimental SSO support for Google, Microsoft, and OIDC
This commit is contained in:
@@ -126,6 +126,7 @@
|
||||
"Content": "الاتصال",
|
||||
"Context Length": "طول السياق",
|
||||
"Continue Response": "متابعة الرد",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "تم نسخ عنوان URL للدردشة المشتركة إلى الحافظة",
|
||||
"Copy": "نسخ",
|
||||
"Copy last code block": "انسخ كتلة التعليمات البرمجية الأخيرة",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "إشعارات",
|
||||
"November": "نوفمبر",
|
||||
"num_thread (Ollama)": "num_thread (أولاما)",
|
||||
"OAuth ID": "",
|
||||
"October": "اكتوبر",
|
||||
"Off": "أغلاق",
|
||||
"Okay, Let's Go!": "حسنا دعنا نذهب!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Съдържание",
|
||||
"Context Length": "Дължина на Контекста",
|
||||
"Continue Response": "Продължи отговора",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Копирана е връзката за чат!",
|
||||
"Copy": "Копирай",
|
||||
"Copy last code block": "Копиране на последен код блок",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Десктоп Известия",
|
||||
"November": "Ноември",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Октомври",
|
||||
"Off": "Изкл.",
|
||||
"Okay, Let's Go!": "ОК, Нека започваме!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "বিষয়বস্তু",
|
||||
"Context Length": "কনটেক্সটের দৈর্ঘ্য",
|
||||
"Continue Response": "যাচাই করুন",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "শেয়ারকৃত কথা-ব্যবহারের URL ক্লিপবোর্ডে কপি করা হয়েছে!",
|
||||
"Copy": "অনুলিপি",
|
||||
"Copy last code block": "সর্বশেষ কোড ব্লক কপি করুন",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "নোটিফিকেশনসমূহ",
|
||||
"November": "নভেম্বর",
|
||||
"num_thread (Ollama)": "num_thread (ওলামা)",
|
||||
"OAuth ID": "",
|
||||
"October": "অক্টোবর",
|
||||
"Off": "বন্ধ",
|
||||
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Contingut",
|
||||
"Context Length": "Mida del context",
|
||||
"Continue Response": "Continuar la resposta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "S'ha copiat l'URL compartida al porta-retalls!",
|
||||
"Copy": "Copiar",
|
||||
"Copy last code block": "Copiar l'últim bloc de codi",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notificacions",
|
||||
"November": "Novembre",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Octubre",
|
||||
"Off": "Desactivat",
|
||||
"Okay, Let's Go!": "D'acord, som-hi!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Kontento",
|
||||
"Context Length": "Ang gitas-on sa konteksto",
|
||||
"Continue Response": "",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "",
|
||||
"Copy": "",
|
||||
"Copy last code block": "Kopyaha ang katapusang bloke sa code",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Mga pahibalo sa desktop",
|
||||
"November": "",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "",
|
||||
"Off": "Napuo",
|
||||
"Okay, Let's Go!": "Okay, lakaw na!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Info",
|
||||
"Context Length": "Context Length",
|
||||
"Continue Response": "Antwort fortsetzen",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Geteilte Chat-URL in die Zwischenablage kopiert!",
|
||||
"Copy": "Kopieren",
|
||||
"Copy last code block": "Letzten Codeblock kopieren",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Desktop-Benachrichtigungen",
|
||||
"November": "November",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Oktober",
|
||||
"Off": "Aus",
|
||||
"Okay, Let's Go!": "Okay, los geht's!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Content",
|
||||
"Context Length": "Context Length",
|
||||
"Continue Response": "",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "",
|
||||
"Copy": "",
|
||||
"Copy last code block": "Copy last code block",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notifications",
|
||||
"November": "",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "",
|
||||
"Off": "Off",
|
||||
"Okay, Let's Go!": "Okay, Let's Go!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "",
|
||||
"Context Length": "",
|
||||
"Continue Response": "",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "",
|
||||
"Copy": "",
|
||||
"Copy last code block": "",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "",
|
||||
"Off": "",
|
||||
"Okay, Let's Go!": "",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "",
|
||||
"Context Length": "",
|
||||
"Continue Response": "",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "",
|
||||
"Copy": "",
|
||||
"Copy last code block": "",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "",
|
||||
"Off": "",
|
||||
"Okay, Let's Go!": "",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Contenido",
|
||||
"Context Length": "Longitud del contexto",
|
||||
"Continue Response": "Continuar Respuesta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "¡URL de chat compartido copiado al portapapeles!",
|
||||
"Copy": "Copiar",
|
||||
"Copy last code block": "Copia el último bloque de código",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notificaciones",
|
||||
"November": "Noviembre",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Octubre",
|
||||
"Off": "Desactivado",
|
||||
"Okay, Let's Go!": "Bien, ¡Vamos!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "محتوا",
|
||||
"Context Length": "طول زمینه",
|
||||
"Continue Response": "ادامه پاسخ",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL چت به کلیپ بورد کپی شد!",
|
||||
"Copy": "کپی",
|
||||
"Copy last code block": "کپی آخرین بلوک کد",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "اعلان",
|
||||
"November": "نوامبر",
|
||||
"num_thread (Ollama)": "num_thread (اولاما)",
|
||||
"OAuth ID": "",
|
||||
"October": "اکتبر",
|
||||
"Off": "خاموش",
|
||||
"Okay, Let's Go!": "باشه، بزن بریم!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Sisältö",
|
||||
"Context Length": "Kontekstin pituus",
|
||||
"Continue Response": "Jatka vastausta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Jaettu keskustelulinkki kopioitu leikepöydälle!",
|
||||
"Copy": "Kopioi",
|
||||
"Copy last code block": "Kopioi viimeisin koodilohko",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Ilmoitukset",
|
||||
"November": "marraskuu",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "lokakuu",
|
||||
"Off": "Pois",
|
||||
"Okay, Let's Go!": "Eikun menoksi!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Contenu",
|
||||
"Context Length": "Longueur du contexte",
|
||||
"Continue Response": "Continuer la réponse",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL de chat partagé copié dans le presse-papier !",
|
||||
"Copy": "Copier",
|
||||
"Copy last code block": "Copier le dernier bloc de code",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notifications de bureau",
|
||||
"November": "Novembre",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Octobre",
|
||||
"Off": "Éteint",
|
||||
"Okay, Let's Go!": "Okay, Allons-y !",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Contenu",
|
||||
"Context Length": "Longueur du contexte",
|
||||
"Continue Response": "Continuer la Réponse",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL du chat copié dans le presse-papiers !",
|
||||
"Copy": "Copier",
|
||||
"Copy last code block": "Copier le dernier bloc de code",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notifications de bureau",
|
||||
"November": "Novembre",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Octobre",
|
||||
"Off": "Désactivé",
|
||||
"Okay, Let's Go!": "D'accord, allons-y !",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "תוכן",
|
||||
"Context Length": "אורך הקשר",
|
||||
"Continue Response": "המשך תגובה",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "העתקת כתובת URL של צ'אט משותף ללוח!",
|
||||
"Copy": "העתק",
|
||||
"Copy last code block": "העתק את בלוק הקוד האחרון",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "התראות",
|
||||
"November": "נובמבר",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "אוקטובר",
|
||||
"Off": "כבוי",
|
||||
"Okay, Let's Go!": "בסדר, בואו נתחיל!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "सामग्री",
|
||||
"Context Length": "प्रसंग की लंबाई",
|
||||
"Continue Response": "प्रतिक्रिया जारी रखें",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "साझा चैट URL को क्लिपबोर्ड पर कॉपी किया गया!",
|
||||
"Copy": "कॉपी",
|
||||
"Copy last code block": "अंतिम कोड ब्लॉक कॉपी करें",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "सूचनाएं",
|
||||
"November": "नवंबर",
|
||||
"num_thread (Ollama)": "num_thread (ओलामा)",
|
||||
"OAuth ID": "",
|
||||
"October": "अक्टूबर",
|
||||
"Off": "बंद",
|
||||
"Okay, Let's Go!": "ठीक है, चलिए चलते हैं!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Sadržaj",
|
||||
"Context Length": "Dužina konteksta",
|
||||
"Continue Response": "Nastavi odgovor",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL dijeljenog razgovora kopiran u međuspremnik!",
|
||||
"Copy": "Kopiraj",
|
||||
"Copy last code block": "Kopiraj zadnji blok koda",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Obavijesti",
|
||||
"November": "Studeni",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Listopad",
|
||||
"Off": "Isključeno",
|
||||
"Okay, Let's Go!": "U redu, idemo!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Contenuto",
|
||||
"Context Length": "Lunghezza contesto",
|
||||
"Continue Response": "Continua risposta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL della chat condivisa copiato negli appunti!",
|
||||
"Copy": "Copia",
|
||||
"Copy last code block": "Copia ultimo blocco di codice",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notifiche desktop",
|
||||
"November": "Novembre",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Ottobre",
|
||||
"Off": "Disattivato",
|
||||
"Okay, Let's Go!": "Ok, andiamo!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "コンテンツ",
|
||||
"Context Length": "コンテキストの長さ",
|
||||
"Continue Response": "続きの応答",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "共有チャットURLをクリップボードにコピーしました!",
|
||||
"Copy": "コピー",
|
||||
"Copy last code block": "最後のコードブロックをコピー",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "デスクトップ通知",
|
||||
"November": "11月",
|
||||
"num_thread (Ollama)": "num_thread(オラマ)",
|
||||
"OAuth ID": "",
|
||||
"October": "10月",
|
||||
"Off": "オフ",
|
||||
"Okay, Let's Go!": "OK、始めましょう!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "კონტენტი",
|
||||
"Context Length": "კონტექსტის სიგრძე",
|
||||
"Continue Response": "პასუხის გაგრძელება",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "ყავს ჩათის URL-ი კლიპბორდში!",
|
||||
"Copy": "კოპირება",
|
||||
"Copy last code block": "ბოლო ბლოკის კოპირება",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "შეტყობინება",
|
||||
"November": "ნოემბერი",
|
||||
"num_thread (Ollama)": "num_thread (ოლამა)",
|
||||
"OAuth ID": "",
|
||||
"October": "ოქტომბერი",
|
||||
"Off": "გამორთვა",
|
||||
"Okay, Let's Go!": "კარგი, წავედით!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "내용",
|
||||
"Context Length": "내용 길이",
|
||||
"Continue Response": "대화 계속",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "공유 채팅 URL이 클립보드에 복사되었습니다!",
|
||||
"Copy": "복사",
|
||||
"Copy last code block": "마지막 코드 블록 복사",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "알림",
|
||||
"November": "11월",
|
||||
"num_thread (Ollama)": "num_thread (올라마)",
|
||||
"OAuth ID": "",
|
||||
"October": "10월",
|
||||
"Off": "끄기",
|
||||
"Okay, Let's Go!": "좋아요, 시작합시다!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Turinys",
|
||||
"Context Length": "Konteksto ilgis",
|
||||
"Continue Response": "Tęsti atsakymą",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Nukopijavote pokalbio nuorodą",
|
||||
"Copy": "Kopijuoti",
|
||||
"Copy last code block": "Kopijuoti paskutinį kodo bloką",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Pranešimai",
|
||||
"November": "lapkritis",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "spalis",
|
||||
"Off": "Išjungta",
|
||||
"Okay, Let's Go!": "Gerai, važiuojam!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Innhold",
|
||||
"Context Length": "Kontekstlengde",
|
||||
"Continue Response": "Fortsett svar",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Kopiert delt chat-URL til utklippstavlen!",
|
||||
"Copy": "Kopier",
|
||||
"Copy last code block": "Kopier siste kodeblokk",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Varsler",
|
||||
"November": "November",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Oktober",
|
||||
"Off": "Av",
|
||||
"Okay, Let's Go!": "Ok, la oss gå!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Inhoud",
|
||||
"Context Length": "Context Lengte",
|
||||
"Continue Response": "Doorgaan met Antwoord",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL van gedeelde gesprekspagina gekopieerd naar klembord!",
|
||||
"Copy": "Kopieer",
|
||||
"Copy last code block": "Kopieer laatste code blok",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Desktop Notificaties",
|
||||
"November": "November",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Oktober",
|
||||
"Off": "Uit",
|
||||
"Okay, Let's Go!": "Okay, Laten we gaan!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "ਸਮੱਗਰੀ",
|
||||
"Context Length": "ਸੰਦਰਭ ਲੰਬਾਈ",
|
||||
"Continue Response": "ਜਵਾਬ ਜਾਰੀ ਰੱਖੋ",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "ਸਾਂਝੇ ਕੀਤੇ ਗੱਲਬਾਤ URL ਨੂੰ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰ ਦਿੱਤਾ!",
|
||||
"Copy": "ਕਾਪੀ ਕਰੋ",
|
||||
"Copy last code block": "ਆਖਰੀ ਕੋਡ ਬਲਾਕ ਨੂੰ ਕਾਪੀ ਕਰੋ",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "ਸੂਚਨਾਵਾਂ",
|
||||
"November": "ਨਵੰਬਰ",
|
||||
"num_thread (Ollama)": "num_thread (ਓਲਾਮਾ)",
|
||||
"OAuth ID": "",
|
||||
"October": "ਅਕਤੂਬਰ",
|
||||
"Off": "ਬੰਦ",
|
||||
"Okay, Let's Go!": "ਠੀਕ ਹੈ, ਚੱਲੋ ਚੱਲੀਏ!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Zawartość",
|
||||
"Context Length": "Długość kontekstu",
|
||||
"Continue Response": "Kontynuuj odpowiedź",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Skopiowano URL czatu do schowka!",
|
||||
"Copy": "Kopiuj",
|
||||
"Copy last code block": "Skopiuj ostatni blok kodu",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Powiadomienia",
|
||||
"November": "Listopad",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Październik",
|
||||
"Off": "Wyłączony",
|
||||
"Okay, Let's Go!": "Okej, zaczynamy!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Conteúdo",
|
||||
"Context Length": "Comprimento do Contexto",
|
||||
"Continue Response": "Continuar resposta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL de bate-papo compartilhado copiada com sucesso!",
|
||||
"Copy": "Copiar",
|
||||
"Copy last code block": "Copiar último bloco de código",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notificações da Área de Trabalho",
|
||||
"November": "Novembro",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Outubro",
|
||||
"Off": "Desligado",
|
||||
"Okay, Let's Go!": "Ok, Vamos Lá!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Conteúdo",
|
||||
"Context Length": "Comprimento do Contexto",
|
||||
"Continue Response": "Continuar resposta",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "URL de Conversa partilhado copiada com sucesso!",
|
||||
"Copy": "Copiar",
|
||||
"Copy last code block": "Copiar último bloco de código",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notificações da Área de Trabalho",
|
||||
"November": "Novembro",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Outubro",
|
||||
"Off": "Desligado",
|
||||
"Okay, Let's Go!": "Ok, Vamos Lá!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Содержание",
|
||||
"Context Length": "Длина контексту",
|
||||
"Continue Response": "Продолжить ответ",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Копирование общей ссылки чат в буфер обмена!",
|
||||
"Copy": "Копировать",
|
||||
"Copy last code block": "Копировать последний блок кода",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Уведомления на рабочем столе",
|
||||
"November": "Ноябрь",
|
||||
"num_thread (Ollama)": "num_thread (Оллама)",
|
||||
"OAuth ID": "",
|
||||
"October": "Октябрь",
|
||||
"Off": "Выключено.",
|
||||
"Okay, Let's Go!": "Давайте начнём!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Садржај",
|
||||
"Context Length": "Дужина контекста",
|
||||
"Continue Response": "Настави одговор",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Адреса дељеног ћаскања ископирана у оставу!",
|
||||
"Copy": "Копирај",
|
||||
"Copy last code block": "Копирај последњи блок кода",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Обавештења",
|
||||
"November": "Новембар",
|
||||
"num_thread (Ollama)": "нум _тхреад (Оллама)",
|
||||
"OAuth ID": "",
|
||||
"October": "Октобар",
|
||||
"Off": "Искључено",
|
||||
"Okay, Let's Go!": "У реду, хајде да кренемо!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Innehåll",
|
||||
"Context Length": "Kontextlängd",
|
||||
"Continue Response": "Fortsätt svar",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Kopierad delad chatt-URL till urklipp!",
|
||||
"Copy": "Kopiera",
|
||||
"Copy last code block": "Kopiera sista kodblock",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Notifikationer",
|
||||
"November": "november",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "oktober",
|
||||
"Off": "Av",
|
||||
"Okay, Let's Go!": "Okej, nu kör vi!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "",
|
||||
"Context Length": "",
|
||||
"Continue Response": "",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "",
|
||||
"Copy": "",
|
||||
"Copy last code block": "",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_thread (Ollama)": "",
|
||||
"OAuth ID": "",
|
||||
"October": "",
|
||||
"Off": "",
|
||||
"Okay, Let's Go!": "",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "İçerik",
|
||||
"Context Length": "Bağlam Uzunluğu",
|
||||
"Continue Response": "Yanıta Devam Et",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Paylaşılan sohbet URL'si panoya kopyalandı!",
|
||||
"Copy": "Kopyala",
|
||||
"Copy last code block": "Son kod bloğunu kopyala",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Bildirimler",
|
||||
"November": "Kasım",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Ekim",
|
||||
"Off": "Kapalı",
|
||||
"Okay, Let's Go!": "Tamam, Hadi Başlayalım!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Зміст",
|
||||
"Context Length": "Довжина контексту",
|
||||
"Continue Response": "Продовжити відповідь",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Скопійовано URL-адресу спільного чату в буфер обміну!",
|
||||
"Copy": "Копіювати",
|
||||
"Copy last code block": "Копіювати останній блок коду",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Сповіщення",
|
||||
"November": "Листопад",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Жовтень",
|
||||
"Off": "Вимк",
|
||||
"Okay, Let's Go!": "Гаразд, давайте почнемо!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "Nội dung",
|
||||
"Context Length": "Độ dài ngữ cảnh (Context Length)",
|
||||
"Continue Response": "Tiếp tục trả lời",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "Đã sao chép link chia sẻ trò chuyện vào clipboard!",
|
||||
"Copy": "Sao chép",
|
||||
"Copy last code block": "Sao chép khối mã cuối cùng",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "Thông báo trên máy tính (Notification)",
|
||||
"November": "Tháng 11",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "Tháng 10",
|
||||
"Off": "Tắt",
|
||||
"Okay, Let's Go!": "Được rồi, Bắt đầu thôi!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "内容",
|
||||
"Context Length": "上下文长度",
|
||||
"Continue Response": "继续生成",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "已复制此对话分享链接至剪贴板!",
|
||||
"Copy": "复制",
|
||||
"Copy last code block": "复制最后一个代码块中的代码",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "桌面通知",
|
||||
"November": "十一月",
|
||||
"num_thread (Ollama)": "num_thread(Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "十月",
|
||||
"Off": "关闭",
|
||||
"Okay, Let's Go!": "确认,开始使用!",
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
"Content": "內容",
|
||||
"Context Length": "上下文長度",
|
||||
"Continue Response": "繼續回答",
|
||||
"Continue with {{provider}}": "",
|
||||
"Copied shared chat URL to clipboard!": "已複製共享聊天連結到剪貼簿!",
|
||||
"Copy": "複製",
|
||||
"Copy last code block": "複製最後一個程式碼區塊",
|
||||
@@ -378,6 +379,7 @@
|
||||
"Notifications": "通知",
|
||||
"November": "11 月",
|
||||
"num_thread (Ollama)": "num_thread(Ollama)",
|
||||
"OAuth ID": "",
|
||||
"October": "10 月",
|
||||
"Off": "關閉",
|
||||
"Okay, Let's Go!": "好的,啟動吧!",
|
||||
|
||||
@@ -149,6 +149,11 @@ type Config = {
|
||||
enable_admin_export: boolean;
|
||||
enable_community_sharing: boolean;
|
||||
};
|
||||
oauth: {
|
||||
providers: {
|
||||
[key: string]: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
type PromptSuggestion = {
|
||||
|
||||
@@ -195,6 +195,18 @@
|
||||
<span class="invisible">▲</span>
|
||||
{/if}
|
||||
</th>
|
||||
<th
|
||||
scope="col"
|
||||
class="px-3 py-2 cursor-pointer select-none"
|
||||
on:click={() => setSortKey('oauth_sub')}
|
||||
>
|
||||
{$i18n.t('OAuth ID')}
|
||||
{#if sortKey === 'oauth_sub'}
|
||||
{sortOrder === 'asc' ? '▲' : '▼'}
|
||||
{:else}
|
||||
<span class="invisible">▲</span>
|
||||
{/if}
|
||||
</th>
|
||||
<th
|
||||
scope="col"
|
||||
class="px-3 py-2 cursor-pointer select-none"
|
||||
@@ -283,6 +295,8 @@
|
||||
</td>
|
||||
<td class=" px-3 py-2"> {user.email} </td>
|
||||
|
||||
<td class=" px-3 py-2"> {user.oauth_sub ?? ''} </td>
|
||||
|
||||
<td class=" px-3 py-2">
|
||||
{dayjs(user.last_active_at * 1000).fromNow()}
|
||||
</td>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
USAGE_POOL
|
||||
} from '$lib/stores';
|
||||
import { goto } from '$app/navigation';
|
||||
import { page } from '$app/stores';
|
||||
import { Toaster, toast } from 'svelte-sonner';
|
||||
|
||||
import { getBackendConfig } from '$lib/apis';
|
||||
@@ -141,7 +142,11 @@
|
||||
await goto('/auth');
|
||||
}
|
||||
} else {
|
||||
await goto('/auth');
|
||||
// Don't redirect if we're already on the auth page
|
||||
// Needed because we pass in tokens from OAuth logins via URL fragments
|
||||
if ($page.url.pathname !== '/auth') {
|
||||
await goto('/auth');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<script>
|
||||
import { goto } from '$app/navigation';
|
||||
import { userSignIn, userSignUp } from '$lib/apis/auths';
|
||||
import { getSessionUser, userSignIn, userSignUp } from '$lib/apis/auths';
|
||||
import Spinner from '$lib/components/common/Spinner.svelte';
|
||||
import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants';
|
||||
import { WEBUI_NAME, config, user, socket } from '$lib/stores';
|
||||
import { onMount, getContext } from 'svelte';
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { generateInitialsImage, canvasPixelTest } from '$lib/utils';
|
||||
import { page } from '$app/stores';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
@@ -21,7 +22,9 @@
|
||||
if (sessionUser) {
|
||||
console.log(sessionUser);
|
||||
toast.success($i18n.t(`You're now logged in.`));
|
||||
localStorage.token = sessionUser.token;
|
||||
if (sessionUser.token) {
|
||||
localStorage.token = sessionUser.token;
|
||||
}
|
||||
|
||||
$socket.emit('user-join', { auth: { token: sessionUser.token } });
|
||||
await user.set(sessionUser);
|
||||
@@ -57,10 +60,35 @@
|
||||
}
|
||||
};
|
||||
|
||||
const checkOauthCallback = async () => {
|
||||
if (!$page.url.hash) {
|
||||
return;
|
||||
}
|
||||
const hash = $page.url.hash.substring(1);
|
||||
if (!hash) {
|
||||
return;
|
||||
}
|
||||
const params = new URLSearchParams(hash);
|
||||
const token = params.get('token');
|
||||
if (!token) {
|
||||
return;
|
||||
}
|
||||
const sessionUser = await getSessionUser(token).catch((error) => {
|
||||
toast.error(error);
|
||||
return null;
|
||||
});
|
||||
if (!sessionUser) {
|
||||
return;
|
||||
}
|
||||
localStorage.token = token;
|
||||
await setSessionUser(sessionUser);
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
if ($user !== undefined) {
|
||||
await goto('/');
|
||||
}
|
||||
await checkOauthCallback();
|
||||
loaded = true;
|
||||
if (($config?.features.auth_trusted_header ?? false) || $config?.features.auth === false) {
|
||||
await signInHandler();
|
||||
@@ -219,6 +247,97 @@
|
||||
{/if}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{#if Object.keys($config?.oauth?.providers ?? {}).length > 0}
|
||||
<div class="inline-flex items-center justify-center w-full">
|
||||
<hr class="w-64 h-px my-8 bg-gray-200 border-0 dark:bg-gray-700" />
|
||||
<span
|
||||
class="absolute px-3 font-medium text-gray-900 -translate-x-1/2 bg-white left-1/2 dark:text-white dark:bg-gray-950"
|
||||
>{$i18n.t('or')}</span
|
||||
>
|
||||
</div>
|
||||
<div class="flex flex-col space-y-2">
|
||||
{#if $config?.oauth?.providers?.google}
|
||||
<button
|
||||
class="flex items-center px-6 border-2 dark:border-gray-800 duration-300 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 w-full rounded-2xl dark:text-white text-sm py-3 transition"
|
||||
on:click={() => {
|
||||
window.location.href = `${WEBUI_BASE_URL}/oauth/google/login`;
|
||||
}}
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" class="size-6 mr-3">
|
||||
<path
|
||||
fill="#EA4335"
|
||||
d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"
|
||||
/><path
|
||||
fill="#4285F4"
|
||||
d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"
|
||||
/><path
|
||||
fill="#FBBC05"
|
||||
d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"
|
||||
/><path
|
||||
fill="#34A853"
|
||||
d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"
|
||||
/><path fill="none" d="M0 0h48v48H0z" />
|
||||
</svg>
|
||||
<span>{$i18n.t('Continue with {{provider}}', { provider: 'Google' })}</span>
|
||||
</button>
|
||||
{/if}
|
||||
{#if $config?.oauth?.providers?.microsoft}
|
||||
<button
|
||||
class="flex items-center px-6 border-2 dark:border-gray-800 duration-300 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 w-full rounded-2xl dark:text-white text-sm py-3 transition"
|
||||
on:click={() => {
|
||||
window.location.href = `${WEBUI_BASE_URL}/oauth/microsoft/login`;
|
||||
}}
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21" class="size-6 mr-3">
|
||||
<rect x="1" y="1" width="9" height="9" fill="#f25022" /><rect
|
||||
x="1"
|
||||
y="11"
|
||||
width="9"
|
||||
height="9"
|
||||
fill="#00a4ef"
|
||||
/><rect x="11" y="1" width="9" height="9" fill="#7fba00" /><rect
|
||||
x="11"
|
||||
y="11"
|
||||
width="9"
|
||||
height="9"
|
||||
fill="#ffb900"
|
||||
/>
|
||||
</svg>
|
||||
<span>{$i18n.t('Continue with {{provider}}', { provider: 'Microsoft' })}</span>
|
||||
</button>
|
||||
{/if}
|
||||
{#if $config?.oauth?.providers?.oidc}
|
||||
<button
|
||||
class="flex items-center px-6 border-2 dark:border-gray-800 duration-300 dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 w-full rounded-2xl dark:text-white text-sm py-3 transition"
|
||||
on:click={() => {
|
||||
window.location.href = `${WEBUI_BASE_URL}/oauth/oidc/login`;
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="size-6 mr-3"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
<span
|
||||
>{$i18n.t('Continue with {{provider}}', {
|
||||
provider: $config?.oauth?.providers?.oidc ?? 'SSO'
|
||||
})}</span
|
||||
>
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user