32 lines
806 B
TypeScript
32 lines
806 B
TypeScript
import { kratosServerClient } from '$lib/kratos-server';
|
|
import { redirect } from '@sveltejs/kit';
|
|
import { ADMIN_USER_ID } from '$env/static/private';
|
|
import type { PageServerLoad } from './$types';
|
|
|
|
export const load: PageServerLoad = async ({ cookies }) => {
|
|
const sessionToken = cookies.get('ory_kratos_session');
|
|
|
|
if (!sessionToken) {
|
|
redirect(303, '/login?return_to=/admin');
|
|
}
|
|
|
|
try {
|
|
const { data: session } = await kratosServerClient.toSession({
|
|
cookie: `ory_kratos_session=${sessionToken}`
|
|
});
|
|
|
|
// Check if the user is the admin
|
|
if (session.identity?.id !== ADMIN_USER_ID) {
|
|
redirect(303, '/?error=unauthorized');
|
|
}
|
|
|
|
return {
|
|
session,
|
|
isAdmin: true
|
|
};
|
|
} catch {
|
|
// If session validation fails, redirect to login
|
|
redirect(303, '/login?return_to=/admin');
|
|
}
|
|
};
|