Files
ihk-projekt/Smartes-Klassenzimmer-Frontend/src/hooks.server.ts
2025-12-10 20:20:39 +01:00

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);
};