'use client' import React, { useState } from 'react' import DjangoCSRFToken from '@/components/DjangoCSRFToken' import Logo from '@/components/Logo'; import { useSearchParams, useRouter } from 'next/navigation' import InputTextIcon from '@/components/InputTextIcon'; import Loader from '@/components/Loader'; // Importez le composant Loader import Button from '@/components/Button'; // Importez le composant Button import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires import { FE_USERS_NEW_PASSWORD_URL, FE_ADMIN_SUBSCRIPTIONS_URL, FE_PARENTS_HOME_URL } from '@/utils/Url'; import { login } from '@/app/actions/authAction'; import { getSession } from 'next-auth/react'; import { useCsrfToken } from '@/context/CsrfContext'; // Importez le hook useCsrfToken import logger from '@/utils/logger'; import { useSession } from 'next-auth/react'; import ProfileSelector from '@/components/ProfileSelector'; // Importez le composant ProfileSelector const useFakeData = process.env.NEXT_PUBLIC_USE_FAKE_DATA === 'true'; export default function Page() { const searchParams = useSearchParams(); const [errorMessage, setErrorMessage] = useState(""); const [userFieldError, setUserFieldError] = useState("") const [passwordFieldError, setPasswordFieldError] = useState("") const [selectedProfile, setSelectedProfile] = useState(1); // Par défaut, sélectionnez ADMIN const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const csrfToken = useCsrfToken(); // Utilisez le hook useCsrfToken function isOK(data) { return data.errorMessage === "" } function handleFormLogin(formData) { setIsLoading(true); login({ email: formData.get('login'), password: formData.get('password'), role_type: selectedProfile // Utilisez le profil sélectionné }).then(result => { logger.debug('Sign In Result', result); setIsLoading(false); if (result.error) { setErrorMessage(result.error); } else { getSession().then(session => { if (!session || !session.user) { throw new Error('Session not found'); } const user = session.user; logger.debug('User Session:', user); const roles = user.roles.filter(role => role.role_type === selectedProfile); if (roles.length > 0) { // const establishment = roles[0].establishment; // localStorage.setItem('establishment_id', establishment); // Redirection en fonction du rôle if (roles[0].role_type === 1) { router.push(FE_ADMIN_SUBSCRIPTIONS_URL); } else if (roles[0].role_type === 2) { router.push(FE_PARENTS_HOME_URL); } else { // Cas anormal } } else { setErrorMessage('No roles found for the specified role type.'); } }).catch(error => { logger.error('Error during session retrieval:', error); setIsLoading(false); setErrorMessage('An error occurred during session retrieval.'); }); } }).catch(error => { logger.error('Error during sign in:', error); setIsLoading(false); setErrorMessage('An error occurred during sign in.'); }); } if (isLoading === true) { return // Affichez le composant Loader } else { return <>

Authentification

{ e.preventDefault(); handleFormLogin(new FormData(e.target)); }}>
} };