Files
cesizen-individuel/mobile/components/AdminGuard.tsx
T
Azmog 7fd27d8dc2 feat(mobile): refonte design DSFR complète + partie admin
- écrans auth/dashboard/journal/info/urgence/profil refondus sur le design system
- AppBar institutionnel République Française sur tous les écrans
- partie admin (utilisateurs, contenus, émotions) avec AdminGuard
- entrée Espace administration dans le profil (admins uniquement)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:22:15 +02:00

28 lines
830 B
TypeScript

import { useEffect } from 'react';
import { useRouter } from 'expo-router';
import { useAuthStore } from '@/lib/auth-store';
/**
* Garde d'affichage pour les écrans d'administration.
* Si l'utilisateur connecté n'est pas administrateur, on le renvoie vers
* l'espace principal. La sécurité réelle reste assurée côté serveur (middleware
* role:administrateur) ; ce composant évite simplement d'afficher l'UI admin.
*/
export default function AdminGuard({ children }: { children: React.ReactNode }) {
const router = useRouter();
const user = useAuthStore((state) => state.user);
const estAdmin = user?.role?.nom === 'administrateur';
useEffect(() => {
if (!estAdmin) {
router.replace('/(tabs)');
}
}, [estAdmin, router]);
if (!estAdmin) {
return null;
}
return <>{children}</>;
}