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