28 lines
713 B
TypeScript
28 lines
713 B
TypeScript
import { redirect } from 'next/navigation';
|
|
import { getCurrentUser } from '@/lib/auth';
|
|
import { hasPageAccess } from '@/lib/permissions';
|
|
|
|
/**
|
|
* HOC pour protéger une page avec vérification des permissions
|
|
*/
|
|
export async function withPageAccess(
|
|
pageRoute: string,
|
|
PageComponent: React.ComponentType<any>
|
|
) {
|
|
return async function ProtectedPage(props: any) {
|
|
const user = await getCurrentUser();
|
|
|
|
if (!user) {
|
|
redirect('/login');
|
|
}
|
|
|
|
const hasAccess = await hasPageAccess(user.id, pageRoute);
|
|
if (!hasAccess) {
|
|
// Rediriger vers la première page accessible ou paramètres
|
|
redirect('/dashboard/parametres');
|
|
}
|
|
|
|
return <PageComponent {...props} />;
|
|
};
|
|
}
|