0106bc4ea0
BREAKING CHANGE: sup config now derives entries from package.json#exports and a server/client glob instead of manual lists; module structure follows flat + barrel convention with .server.js/.client.js runtime suffixes
20 lines
607 B
JavaScript
20 lines
607 B
JavaScript
import { getSession } from './actions.js';
|
|
import { redirect } from 'next/navigation';
|
|
|
|
export async function protect({ redirectTo = '/auth/login' } = {}) {
|
|
const session = await getSession();
|
|
if (!session) redirect(redirectTo);
|
|
return session;
|
|
}
|
|
|
|
export async function checkAuth() {
|
|
return getSession();
|
|
}
|
|
|
|
export async function requireRole(allowedRoles = [], { redirectTo = '/auth/login', forbiddenRedirect = '/' } = {}) {
|
|
const session = await getSession();
|
|
if (!session) redirect(redirectTo);
|
|
if (!allowedRoles.includes(session.user.role)) redirect(forbiddenRedirect);
|
|
return session;
|
|
}
|