From 50f6addd6f0d5374972962a36da73dc87ba68f69 Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Thu, 28 Mar 2024 10:34:57 +0000 Subject: [PATCH] feat: auto signup/login with WEBUI_AUTH_TRUSTED_EMAIL_HEADER --- backend/apps/web/routers/auths.py | 16 +++--------- src/routes/auth/+page.svelte | 41 +++++++++++++++++++------------ 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/backend/apps/web/routers/auths.py b/backend/apps/web/routers/auths.py index c1a1121b3..822a6757a 100644 --- a/backend/apps/web/routers/auths.py +++ b/backend/apps/web/routers/auths.py @@ -105,8 +105,9 @@ async def signin(request: Request, form_data: SigninForm): if WEBUI_AUTH_TRUSTED_EMAIL_HEADER not in request.headers: raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_TRUSTED_HEADER) - trusted_email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower( - ) + trusted_email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower() + if not Users.get_user_by_email(trusted_email.lower()): + await signup(request, SignupForm(email=trusted_email, password=str(uuid.uuid4()), name=trusted_email)) user = Auths.authenticate_user_by_trusted_header(trusted_email) else: user = Auths.authenticate_user(form_data.email.lower(), @@ -150,17 +151,6 @@ async def signup(request: Request, form_data: SignupForm): if Users.get_user_by_email(form_data.email.lower()): raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN) - if WEBUI_AUTH_TRUSTED_EMAIL_HEADER: - if WEBUI_AUTH_TRUSTED_EMAIL_HEADER not in request.headers: - raise HTTPException(400, - detail=ERROR_MESSAGES.INVALID_TRUSTED_HEADER) - trusted_email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower( - ) - if trusted_email != form_data.email: - raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_MISMATCH) - # TODO: Yolo hack to assign a password - form_data.password = str(uuid.uuid4()) - try: role = ( "admin" diff --git a/src/routes/auth/+page.svelte b/src/routes/auth/+page.svelte index a72f0e055..6b6629467 100644 --- a/src/routes/auth/+page.svelte +++ b/src/routes/auth/+page.svelte @@ -15,8 +15,6 @@ let email = ''; let password = ''; - let showPasswordField = !($config?.trusted_header_auth ?? false); - const setSessionUser = async (sessionUser) => { if (sessionUser) { console.log(sessionUser); @@ -58,6 +56,9 @@ await goto('/'); } loaded = true; + if ($config?.trusted_header_auth ?? false) { + await signInHandler(); + } }); @@ -92,7 +93,16 @@ -->
-
+ {#if ($config?.trusted_header_auth ?? false)} +
+
+ {$i18n.t('Signing in')} + {$i18n.t('to')} + {$WEBUI_NAME} +
+
+ {:else} +
{ @@ -143,19 +153,17 @@ />
- {#if showPasswordField} -
-
{$i18n.t('Password')}
- -
- {/if} +
+
{$i18n.t('Password')}
+ +
@@ -188,6 +196,7 @@
+ {/if} {/if}