Explorar o código

feat: auth error handling

Timothy J. Baek hai 1 ano
pai
achega
a2e74c59b9

+ 22 - 13
backend/config.py

@@ -1,10 +1,12 @@
 from dotenv import load_dotenv, find_dotenv
 from pymongo import MongoClient
+from constants import ERROR_MESSAGES
 
 from secrets import token_bytes
 from base64 import b64encode
 import os
 
+
 load_dotenv(find_dotenv())
 
 ####################################
@@ -35,23 +37,30 @@ WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.11")
 # WEBUI_AUTH
 ####################################
 
+
 WEBUI_AUTH = True if os.environ.get("WEBUI_AUTH", "TRUE") == "TRUE" else False
 
 
-if WEBUI_AUTH:
-    ####################################
-    # WEBUI_DB
-    ####################################
+####################################
+# WEBUI_DB
+####################################
+
+
+WEBUI_DB_URL = os.environ.get("WEBUI_DB_URL", "mongodb://root:root@localhost:27017/")
 
-    WEBUI_DB_URL = os.environ.get(
-        "WEBUI_DB_URL", "mongodb://root:root@localhost:27017/"
-    )
+if WEBUI_AUTH and WEBUI_DB_URL == "":
+    raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)
 
-    DB_CLIENT = MongoClient(f"{WEBUI_DB_URL}?authSource=admin")
-    DB = DB_CLIENT["ollama-webui"]
 
-    ####################################
-    # WEBUI_JWT_SECRET_KEY
-    ####################################
+DB_CLIENT = MongoClient(f"{WEBUI_DB_URL}?authSource=admin")
+DB = DB_CLIENT["ollama-webui"]
+
+
+####################################
+# WEBUI_JWT_SECRET_KEY
+####################################
+
+WEBUI_JWT_SECRET_KEY = os.environ.get("WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t")
 
-    WEBUI_JWT_SECRET_KEY = os.environ.get("WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t")
+if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "":
+    raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)

+ 4 - 0
backend/constants.py

@@ -6,7 +6,11 @@ class MESSAGES(str, Enum):
 
 
 class ERROR_MESSAGES(str, Enum):
+    def __str__(self) -> str:
+        return super().__str__()
+
     DEFAULT = lambda err="": f"Something went wrong :/\n{err if err else ''}"
+    ENV_VAR_NOT_FOUND = "Essential environment variable not found. Terminating now."
     INVALID_TOKEN = (
         "Your session has expired or the token is invalid. Please sign in again."
     )

+ 1 - 1
src/lib/components/chat/Messages.svelte

@@ -330,7 +330,7 @@
 								/>
 							{:else}
 								<img
-									src={$user.profile_image_url}
+									src={$user ? $user.profile_image_url : '/user.png'}
 									class=" max-w-[28px] object-cover rounded-full"
 									alt="User profile"
 								/>

+ 4 - 1
src/lib/components/layout/Sidebar.svelte

@@ -1,6 +1,9 @@
 <script lang="ts">
 	import { v4 as uuidv4 } from 'uuid';
 
+	import fileSaver from 'file-saver';
+	const { saveAs } = fileSaver;
+
 	import { goto, invalidateAll } from '$app/navigation';
 	import { page } from '$app/stores';
 	import { user, db, chats, showSettings, chatId } from '$lib/stores';
@@ -141,7 +144,7 @@
 
 	const exportChatHistory = async () => {
 		await chats.set(await $db.getAllFromIndex('chats', 'timestamp'));
-		let blob = new Blob([JSON.stringify(chats)], { type: 'application/json' });
+		let blob = new Blob([JSON.stringify($chats)], { type: 'application/json' });
 		saveAs(blob, `chat-export-${Date.now()}.json`);
 	};