Consolidate auth routes under /auth and rename /u to /user

Moves the login screen from /login to /auth, logout from /logout to
/auth/logout (alongside the existing /auth/login and /auth/callback
endpoints), and the public profile route from /u/[id] to /user/[id].

AUTH_REDIRECT_URI and AUTH_POST_LOGOUT_URI already point at
/auth/callback and / respectively, so no Zitadel config change is
needed for the auth move.
This commit is contained in:
2026-09-22 14:20:46 +02:00
parent 76f7535ffa
commit fbb102ffbd
12 changed files with 18 additions and 17 deletions
@@ -131,7 +131,7 @@
if (!topResult || topResult.kind === 'track') return undefined;
if (topResult.kind === 'album') return `/albums/${topResult.album.id}`;
if (topResult.kind === 'playlist') return `/playlists/${topResult.playlist.id}`;
return `/u/${topResult.user.id}`;
return `/user/${topResult.user.id}`;
});
function togglePlay(index: number) {
@@ -400,7 +400,7 @@
<ul class="flex flex-col gap-1">
{#each capped(sfilter, users) as u (u.id)}
<li>
<ListRow title={u.name} href="/u/{u.id}" size="lg">
<ListRow title={u.name} href="/user/{u.id}" size="lg">
{#snippet art()}
<Avatar name={u.name} src={u.profilePictureUrl} size="md" />
{/snippet}
+2 -2
View File
@@ -5,7 +5,7 @@ import { createApiClient } from '$lib/server/api';
import { authConfig } from '$lib/server/config';
import { LIKED_TRACKS_PAGE_SIZE } from '$lib/config';
const PUBLIC_PATHS = new Set(['/login']);
const PUBLIC_PATHS = new Set(['/auth']);
const SIDEBAR_PLAYLISTS_LIMIT = 8;
async function fetchSidebarPlaylists(
@@ -43,7 +43,7 @@ export const load: LayoutServerLoad = async ({ locals, url, fetch }) => {
const allowAnonymousListening = await getAllowAnonymousListening(fetch);
if (!locals.user && !allowAnonymousListening && !PUBLIC_PATHS.has(url.pathname)) {
redirect(302, `/login?returnTo=${encodeURIComponent(url.pathname + url.search)}`);
redirect(302, `/auth?returnTo=${encodeURIComponent(url.pathname + url.search)}`);
}
const accountUrl = authConfig.issuer
+1 -1
View File
@@ -29,7 +29,7 @@
if (data.likedTracks?.length) liked.hydrate(data.likedTracks);
});
const isAuthPage = $derived(page.url.pathname === '/login');
const isAuthPage = $derived(page.url.pathname === '/auth');
const hasTrack = $derived(player.currentId !== null);
const initialThemeCss = `:root{${tokensToCss(buildThemeTokens(ACCENT_HUE, 'dark'))}}:root[data-theme='light']{${tokensToCss(buildThemeTokens(ACCENT_HUE, 'light'))}}`;