import { useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { useEstablishment } from '@/context/EstablishmentContext'; import { FE_USERS_LOGIN_URL, getRedirectUrlFromRole } from '@/utils/Url'; const ProtectedRoute = ({ children, requiredRight }) => { const { user, profileRole } = useEstablishment(); const router = useRouter(); let hasRequiredRight = false; if (requiredRight && Array.isArray(requiredRight)) { // Vérifier si l'utilisateur a le droit requis hasRequiredRight = requiredRight.some((right) => profileRole === right); } else { hasRequiredRight = profileRole === requiredRight; } // Vérifier si l'utilisateur a au moins un rôle correspondant au requiredRight useEffect(() => { if (user) { // Vérifier si l'utilisateur a le droit requis mais pas le bon role on le redirige la page d'accueil associé au role if (!hasRequiredRight) { const redirectUrl = getRedirectUrlFromRole(profileRole); router.push(`${redirectUrl}`); } } else { // User non authentifié router.push(`${FE_USERS_LOGIN_URL}`); } }, [profileRole]); // Autoriser l'affichage si authentifié et rôle correct return hasRequiredRight ? children : null; }; export default ProtectedRoute;