'use client';
import React, { useState } from 'react';
import DjangoCSRFToken from '@/components/DjangoCSRFToken';
import Logo from '@/components/Logo';
import { 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, getRedirectUrlFromRole } 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 { useEstablishment } from '@/context/EstablishmentContext';
import { useNotification } from '@/context/NotificationContext';
export default function Page() {
const { initializeContextWithSession } = useEstablishment();
const [isLoading, setIsLoading] = useState(false);
const router = useRouter();
const csrfToken = useCsrfToken(); // Utilisez le hook useCsrfToken
const { showNotification } = useNotification();
function handleFormLogin(formData) {
setIsLoading(true);
login({
email: formData.get('login'),
password: formData.get('password'),
})
.then((result) => {
logger.debug('Sign In Result', result);
if (result.error) {
showNotification(
result.error,
'error',
'Erreur'
);
setIsLoading(false);
} else {
// On initialise le contexte establishement avec la session
getSession()
.then((session) => {
initializeContextWithSession(session, (role) => {
const url = getRedirectUrlFromRole(role);
if (url) {
router.push(url);
} else {
showNotification(
'Type de rôle non géré',
'error',
'Erreur'
);
}
});
setIsLoading(false);
})
.catch((error) => {
logger.error(
'Erreur lors de la récupération de la session:',
error
);
setIsLoading(false);
showNotification(
'Une erreur est survenue lors de la récupération de la session.',
'error',
'Erreur'
);
});
}
})
.catch((error) => {
logger.error('Erreur lors de la connexion:', error);
setIsLoading(false);
showNotification(
'Une erreur est survenue lors de la connexion.',
'error',
'Erreur'
);
});
}
if (isLoading === true) {
return