Files
optima/ui/src/routes/+layout.server.ts
T

30 lines
853 B
TypeScript

import { optima } from "$lib";
import type { LayoutServerLoad } from "./$types";
export const load: LayoutServerLoad = async ({ locals }) => {
const accessToken = locals.session?.accessToken ?? null;
// Only check permissions if the user is authenticated
if (!accessToken) {
return { canViewAdmin: false, user: null };
}
let canViewAdmin = false;
let user = null;
try {
const userInfo = await optima.user.fetchInfo(accessToken);
user = userInfo.data ?? null;
const permResult = await optima.user.checkPermissions(accessToken, [
"ui.navigation.admin.view",
]);
canViewAdmin = permResult?.data?.results?.[0]?.hasPermission === true;
} catch (err) {
console.error("Admin permission check or user fetch failed:", err);
canViewAdmin = false;
user = null;
}
return { canViewAdmin, user };
};