boredgame/src/routes/(app)/(protected)/admin/+layout.server.ts

32 lines
816 B
TypeScript

import { redirect } from 'sveltekit-flash-message/server';
import { notSignedInMessage } from '$lib/flashMessages';
import db from '$lib/drizzle';
import { eq } from 'drizzle-orm';
import { user_roles } from '../../../../schema';
export async function load(event) {
const { locals } = event;
if (!locals?.user) {
redirect(302, '/login', notSignedInMessage, event);
}
const { user } = locals;
const userRoles = await db.query.user_roles.findMany({
where: eq(user_roles.user_id, user.id),
with: {
role: {
columns: {
name: true
}
}
}
});
const containsAdminRole = userRoles.some((user_role) => user_role?.role?.name === 'admin');
if (!userRoles?.length || !containsAdminRole) {
console.log('Not an admin');
redirect(302, '/login', notSignedInMessage, event);
}
return {};
}