diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index 84e02e2..5493e17 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -6,59 +6,53 @@ export const handle: Handle = async ({ event, resolve }) => { const pathname = event.url.pathname - if (pathname.startsWith('/landing')) { - const response = await resolve(event) - - return response - } + if (pathname.startsWith('/dashboard')) { + if (!sessionId) { + redirect(303, '/login') + } + const { session, user } = await lucia.validateSession(sessionId) - const allowedPath = ['/login', '/signup'] + if (!user) { + redirect(303, '/login') + } - if (allowedPath.includes(pathname)) { - if (sessionId) { - redirect(303, '/') + if (session && session.fresh) { + const sessionCookie = lucia.createSessionCookie(session.id) + // sveltekit types deviates from the de-facto standard + // you can use 'as any' too + event.cookies.set(sessionCookie.name, sessionCookie.value, { + path: '.', + ...sessionCookie.attributes, + }) + } + if (!session) { + const sessionCookie = lucia.createBlankSessionCookie() + event.cookies.set(sessionCookie.name, sessionCookie.value, { + path: '/', + ...sessionCookie.attributes, + }) } - event.locals.session = null - const response = await resolve(event) - return response - } + event.locals.user = user + event.locals.session = session - if (pathname.startsWith('/api')) { const response = await resolve(event) return response } - if (!sessionId) { - redirect(303, '/login') - } - const { session, user } = await lucia.validateSession(sessionId) + const authPaths = ['/login', '/signup'] - if (!user) { - redirect(303, '/login') - } + if (authPaths.includes(pathname)) { + if (sessionId) { + redirect(303, '/dashboard') + } + event.locals.session = null + const response = await resolve(event) - if (session && session.fresh) { - const sessionCookie = lucia.createSessionCookie(session.id) - // sveltekit types deviates from the de-facto standard - // you can use 'as any' too - event.cookies.set(sessionCookie.name, sessionCookie.value, { - path: '.', - ...sessionCookie.attributes, - }) - } - if (!session) { - const sessionCookie = lucia.createBlankSessionCookie() - event.cookies.set(sessionCookie.name, sessionCookie.value, { - path: '/', - ...sessionCookie.attributes, - }) + return response } - event.locals.user = user - event.locals.session = session - const response = await resolve(event) return response diff --git a/frontend/src/lib/components/ShortenerCard.svelte b/frontend/src/lib/components/ShortenerCard.svelte index 1e463c7..2d3b925 100644 --- a/frontend/src/lib/components/ShortenerCard.svelte +++ b/frontend/src/lib/components/ShortenerCard.svelte @@ -18,7 +18,7 @@ TrashIcon, } from 'lucide-svelte' import DeleteShortenerDialog from './DeleteShortenerDialog.svelte' - import EditLinkPage from '$lib/../routes/(app)/links/[id]/edit/+page.svelte' + import EditLinkPage from '$lib/../routes/(app)/dashboard/links/[id]/edit/+page.svelte' import { goto, preloadData, pushState } from '$app/navigation' import { cn } from '$lib/utils' @@ -41,16 +41,16 @@ const getUrl = () => { if (shortener.projectUuid) { - return `/projects/${shortener.projectUuid}` + return `/dashboard/projects/${shortener.projectUuid}` } - return '' + return '/dashboard' } let editProjectLinkOpen = false let editData: typeof $page.state.editLink const showEditModal = async (code: string) => { - const href = `/links/${code}/edit` + const href = `/dashboard/links/${code}/edit` const result = await preloadData(href) if (result.type === 'loaded' && result.status === 200) { @@ -70,7 +70,7 @@ const result = await preloadData(href) if (result.type === 'loaded' && result.status === 200) { - if (getUrl().startsWith('/projects')) { + if (getUrl().startsWith('/dashboard/projects')) { pushState(href, { projectLinkQR: result.data }) } else { pushState(href, { linkQR: result.data }) @@ -113,7 +113,7 @@