Преглед изворни кода

feat: backend required error page

Timothy J. Baek пре 1 година
родитељ
комит
8d5c3ee56f
3 измењених фајлова са 62 додато и 13 уклоњено
  1. 3 3
      backend/config.py
  2. 15 10
      src/routes/+layout.svelte
  3. 44 0
      src/routes/error/+page.svelte

+ 3 - 3
backend/config.py

@@ -31,13 +31,13 @@ if ENV == "prod":
 # WEBUI_VERSION
 ####################################
 
-WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.40")
+WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.42")
 
 ####################################
-# WEBUI_AUTH
+# WEBUI_AUTH (Required for security)
 ####################################
 
-WEBUI_AUTH = True if os.environ.get("WEBUI_AUTH", "FALSE") == "TRUE" else False
+WEBUI_AUTH = True
 
 ####################################
 # WEBUI_JWT_SECRET_KEY

+ 15 - 10
src/routes/+layout.svelte

@@ -11,7 +11,8 @@
 	let loaded = false;
 
 	onMount(async () => {
-		const resBackend = await fetch(`${WEBUI_API_BASE_URL}/`, {
+		// Check Backend Status
+		const res = await fetch(`${WEBUI_API_BASE_URL}/`, {
 			method: 'GET',
 			headers: {
 				'Content-Type': 'application/json'
@@ -26,13 +27,14 @@
 				return null;
 			});
 
-		console.log(resBackend);
-		await config.set(resBackend);
+		if (res) {
+			await config.set(res);
+			console.log(res);
 
-		if ($config) {
-			if ($config.auth) {
+			if ($config) {
 				if (localStorage.token) {
-					const res = await fetch(`${WEBUI_API_BASE_URL}/auths`, {
+					// Get Session User Info
+					const sessionUser = await fetch(`${WEBUI_API_BASE_URL}/auths`, {
 						method: 'GET',
 						headers: {
 							'Content-Type': 'application/json',
@@ -49,8 +51,8 @@
 							return null;
 						});
 
-					if (res) {
-						await user.set(res);
+					if (sessionUser) {
+						await user.set(sessionUser);
 					} else {
 						localStorage.removeItem('token');
 						await goto('/auth');
@@ -59,6 +61,8 @@
 					await goto('/auth');
 				}
 			}
+		} else {
+			await goto(`/error`);
 		}
 
 		await tick();
@@ -69,8 +73,9 @@
 <svelte:head>
 	<title>Ollama</title>
 </svelte:head>
-<Toaster />
 
-{#if $config !== undefined && loaded}
+{#if loaded}
 	<slot />
 {/if}
+
+<Toaster />

+ 44 - 0
src/routes/error/+page.svelte

@@ -0,0 +1,44 @@
+<script>
+	import { goto } from '$app/navigation';
+	import { config } from '$lib/stores';
+	import { onMount } from 'svelte';
+
+	let loaded = false;
+
+	onMount(async () => {
+		if ($config) {
+			await goto('/');
+		}
+
+		loaded = true;
+	});
+</script>
+
+{#if loaded}
+	<div class="absolute w-full h-full flex z-50">
+		<div class="absolute rounded-xl w-full h-full backdrop-blur bg-gray-900/5 flex justify-center">
+			<div class="m-auto pb-44 flex flex-col justify-center">
+				<div class="max-w-md">
+					<div class="text-center text-2xl font-medium z-50">Ollama WebUI Backend Required</div>
+
+					<div class=" mt-4 text-center text-sm w-full">
+						Oops! It seems like your Ollama WebUI needs a little attention. <br
+							class=" hidden sm:flex"
+						/>
+						describe troubleshooting/installation, help @ discord
+
+						<!-- TODO: update text -->
+					</div>
+
+					<div class=" mt-6 mx-auto relative group w-fit">
+						<button
+							class="relative z-20 flex px-5 py-2 rounded-full bg-gray-100 hover:bg-gray-200 transition font-medium text-sm"
+						>
+							Check Again
+						</button>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+{/if}