32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { redirect } from '@sveltejs/kit';
|
|
import type { Handle } from '@sveltejs/kit';
|
|
|
|
// Routen die NICHT authentifiziert sein müssen
|
|
const PUBLIC_ROUTES = ['/', '/login', '/register', '/forgot-password', '/reset-password'];
|
|
|
|
// Routen die NUR für nicht-authentifizierte Nutzer sind (redirect zu Dashboard wenn eingeloggt)
|
|
const AUTH_ROUTES = ['/login', '/register', '/forgot-password', '/reset-password'];
|
|
|
|
export const handle: Handle = async ({ event, resolve }) => {
|
|
const { url, cookies } = event;
|
|
const accessToken = cookies.get('access_token');
|
|
|
|
// 1. Wenn User eingeloggt ist und auf eine Auth-Seite will -> Redirect zum Dashboard
|
|
if (accessToken && AUTH_ROUTES.includes(url.pathname)) {
|
|
throw redirect(303, '/dashboard');
|
|
}
|
|
|
|
// 2. Wenn auf öffentlicher Route (und nicht oben abgefangen), einfach durchlassen
|
|
if (PUBLIC_ROUTES.includes(url.pathname)) {
|
|
return resolve(event);
|
|
}
|
|
|
|
// 3. Wenn nicht authentifiziert und auf geschützter Route -> Redirect zum Login
|
|
if (!accessToken) {
|
|
throw redirect(303, '/login');
|
|
}
|
|
|
|
// Request normal weitergeben
|
|
return resolve(event);
|
|
};
|