feat: hide alternative sign in methods page if email login disabled

This commit is contained in:
Elias Schneider
2025-09-30 12:15:08 +02:00
parent 01db8c0a46
commit d010be4c88
3 changed files with 31 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
<script lang="ts">
import { page } from '$app/state';
import { m } from '$lib/paraglide/messages';
import appConfigStore from '$lib/stores/application-configuration-store';
import { cachedBackgroundImage } from '$lib/utils/cached-image-util';
import { cn } from '$lib/utils/style';
import type { Snippet } from 'svelte';
@@ -18,6 +19,24 @@
} = $props();
const isDesktop = new MediaQuery('min-width: 1024px');
let alternativeSignInButton = $state({
href: '/login/alternative',
label: m.alternative_sign_in_methods()
});
$effect(() => {
if ($appConfigStore.emailOneTimeAccessAsUnauthenticatedEnabled) {
alternativeSignInButton.href = '/login/alternative';
alternativeSignInButton.label = m.alternative_sign_in_methods();
} else {
alternativeSignInButton.href = '/login/alternative/code';
alternativeSignInButton.label = m.sign_in_with_login_code();
}
if (page.url.pathname == '/login') {
alternativeSignInButton.href = `${alternativeSignInButton.href}?redirect=${encodeURIComponent(page.url.pathname + page.url.search)}`;
}
});
</script>
{#if isDesktop.current}
@@ -38,14 +57,10 @@
style={animate ? 'animation-delay: 500ms;' : ''}
>
<a
href={page.url.pathname == '/login'
? '/login/alternative'
: `/login/alternative?redirect=${encodeURIComponent(
page.url.pathname + page.url.search
)}`}
href={alternativeSignInButton.href}
class="text-muted-foreground text-xs transition-colors hover:underline"
>
{m.alternative_sign_in_methods()}
{alternativeSignInButton.label}
</a>
</div>
{/if}
@@ -75,14 +90,10 @@
{@render children()}
{#if showAlternativeSignInMethodButton}
<a
href={page.url.pathname == '/login'
? '/login/alternative'
: `/login/alternative?redirect=${encodeURIComponent(
page.url.pathname + page.url.search
)}`}
href={alternativeSignInButton.href}
class="text-muted-foreground mt-7 flex justify-center text-xs transition-colors hover:underline"
>
{m.alternative_sign_in_methods()}
{alternativeSignInButton.label}
</a>
{/if}
</Card.CardContent>

View File

@@ -6,6 +6,7 @@
import Input from '$lib/components/ui/input/input.svelte';
import { m } from '$lib/paraglide/messages';
import UserService from '$lib/services/user-service';
import appConfigStore from '$lib/stores/application-configuration-store';
import userStore from '$lib/stores/user-store.js';
import { getAxiosErrorMessage } from '$lib/utils/error-util';
import { preventDefault } from '$lib/utils/event-util';
@@ -63,8 +64,12 @@
<form onsubmit={preventDefault(authenticate)} class="w-full max-w-[450px]">
<Input id="Code" class="mt-7" placeholder={m.code()} bind:value={code} type="text" />
<div class="mt-8 flex justify-between gap-2">
<Button variant="secondary" class="flex-1" href={'/login/alternative' + page.url.search}
>{m.go_back()}</Button
<Button
variant="secondary"
class="flex-1"
href={($appConfigStore.emailOneTimeAccessAsUnauthenticatedEnabled
? '/login/alternative'
: '/login') + page.url.search}>{m.go_back()}</Button
>
<Button class="flex-1" type="submit" {isLoading}>{m.submit()}</Button>
</div>