mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
refactor: Remplacement de quelques popup par les notifications
This commit is contained in:
@ -487,7 +487,7 @@ class ResetPasswordView(APIView):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
def post(self, request, code):
|
def post(self, request, code):
|
||||||
retourErreur = error.returnMessage[error.BAD_URL]
|
retourErreur = ''
|
||||||
retour = ''
|
retour = ''
|
||||||
newProfilConnection = JSONParser().parse(request)
|
newProfilConnection = JSONParser().parse(request)
|
||||||
|
|
||||||
@ -498,7 +498,7 @@ class ResetPasswordView(APIView):
|
|||||||
if profil:
|
if profil:
|
||||||
|
|
||||||
if datetime.strptime(util.convertToStr(util._now(), '%d-%m-%Y %H:%M'), '%d-%m-%Y %H:%M') > datetime.strptime(profil.datePeremption, '%d-%m-%Y %H:%M'):
|
if datetime.strptime(util.convertToStr(util._now(), '%d-%m-%Y %H:%M'), '%d-%m-%Y %H:%M') > datetime.strptime(profil.datePeremption, '%d-%m-%Y %H:%M'):
|
||||||
retourErreur = error.returnMessage[error.EXPIRED_URL] % (_uuid)
|
retourErreur = error.returnMessage[error.EXPIRED_URL]
|
||||||
elif validationOk:
|
elif validationOk:
|
||||||
retour = error.returnMessage[error.PASSWORD_CHANGED]
|
retour = error.returnMessage[error.PASSWORD_CHANGED]
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ returnMessage = {
|
|||||||
DIFFERENT_PASWWORD: 'Les mots de passe ne correspondent pas',
|
DIFFERENT_PASWWORD: 'Les mots de passe ne correspondent pas',
|
||||||
PROFIL_NOT_EXISTS: 'Aucun profil associé à cet utilisateur',
|
PROFIL_NOT_EXISTS: 'Aucun profil associé à cet utilisateur',
|
||||||
MESSAGE_REINIT_PASSWORD: 'Un mail a été envoyé à l\'adresse \'%s\'',
|
MESSAGE_REINIT_PASSWORD: 'Un mail a été envoyé à l\'adresse \'%s\'',
|
||||||
EXPIRED_URL:'L\'URL a expiré. Effectuer à nouveau la demande de réinitialisation de mot de passe : http://localhost:3000/password/reset?uuid=%s',
|
EXPIRED_URL:'L\'URL a expiré. Effectuer à nouveau la demande de réinitialisation de mot de passe : http://localhost:3000/password/new',
|
||||||
PASSWORD_CHANGED: 'Le mot de passe a été réinitialisé',
|
PASSWORD_CHANGED: 'Le mot de passe a été réinitialisé',
|
||||||
WRONG_MAIL_FORMAT: 'L\'adresse mail est mal formatée',
|
WRONG_MAIL_FORMAT: 'L\'adresse mail est mal formatée',
|
||||||
PROFIL_INACTIVE: 'Le profil n\'est pas actif',
|
PROFIL_INACTIVE: 'Le profil n\'est pas actif',
|
||||||
|
|||||||
@ -502,7 +502,11 @@ export default function CreateSubscriptionPage() {
|
|||||||
// Mode édition
|
// Mode édition
|
||||||
editRegisterForm(registerFormID, formData, csrfToken)
|
editRegisterForm(registerFormID, formData, csrfToken)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
logger.debug('Dossier mis à jour avec succès:', response);
|
showNotification(
|
||||||
|
"Dossier d'inscription mis à jour avec succès",
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
router.push(FE_ADMIN_SUBSCRIPTIONS_URL);
|
router.push(FE_ADMIN_SUBSCRIPTIONS_URL);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@ -613,6 +617,11 @@ export default function CreateSubscriptionPage() {
|
|||||||
Promise.all([...clonePromises, ...parentClonePromises])
|
Promise.all([...clonePromises, ...parentClonePromises])
|
||||||
.then(() => {
|
.then(() => {
|
||||||
// Redirection après succès
|
// Redirection après succès
|
||||||
|
showNotification(
|
||||||
|
"Dossier d'inscription créé avec succès",
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
router.push(FE_ADMIN_SUBSCRIPTIONS_URL);
|
router.push(FE_ADMIN_SUBSCRIPTIONS_URL);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
|||||||
@ -52,6 +52,7 @@ import {
|
|||||||
HISTORICAL_FILTER,
|
HISTORICAL_FILTER,
|
||||||
} from '@/utils/constants';
|
} from '@/utils/constants';
|
||||||
import AlertMessage from '@/components/AlertMessage';
|
import AlertMessage from '@/components/AlertMessage';
|
||||||
|
import { useNotification } from '@/context/NotificationContext';
|
||||||
|
|
||||||
export default function Page({ params: { locale } }) {
|
export default function Page({ params: { locale } }) {
|
||||||
const t = useTranslations('subscriptions');
|
const t = useTranslations('subscriptions');
|
||||||
@ -91,8 +92,6 @@ export default function Page({ params: { locale } }) {
|
|||||||
const [isFilesModalOpen, setIsFilesModalOpen] = useState(false);
|
const [isFilesModalOpen, setIsFilesModalOpen] = useState(false);
|
||||||
const [selectedRegisterForm, setSelectedRegisterForm] = useState([]);
|
const [selectedRegisterForm, setSelectedRegisterForm] = useState([]);
|
||||||
|
|
||||||
const [popupVisible, setPopupVisible] = useState(false);
|
|
||||||
const [popupMessage, setPopupMessage] = useState('');
|
|
||||||
const [confirmPopupVisible, setConfirmPopupVisible] = useState(false);
|
const [confirmPopupVisible, setConfirmPopupVisible] = useState(false);
|
||||||
const [confirmPopupMessage, setConfirmPopupMessage] = useState('');
|
const [confirmPopupMessage, setConfirmPopupMessage] = useState('');
|
||||||
const [confirmPopupOnConfirm, setConfirmPopupOnConfirm] = useState(() => {});
|
const [confirmPopupOnConfirm, setConfirmPopupOnConfirm] = useState(() => {});
|
||||||
@ -103,6 +102,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
const csrfToken = useCsrfToken();
|
const csrfToken = useCsrfToken();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { selectedEstablishmentId } = useEstablishment();
|
const { selectedEstablishmentId } = useEstablishment();
|
||||||
|
const { showNotification } = useNotification();
|
||||||
|
|
||||||
const openSepaUploadModal = (row) => {
|
const openSepaUploadModal = (row) => {
|
||||||
setSelectedRowForUpload(row);
|
setSelectedRowForUpload(row);
|
||||||
@ -294,15 +294,21 @@ export default function Page({ params: { locale } }) {
|
|||||||
editRegisterForm(row.student.id, formData, csrfToken)
|
editRegisterForm(row.student.id, formData, csrfToken)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
logger.debug('Mandat SEPA uploadé avec succès :', response);
|
logger.debug('Mandat SEPA uploadé avec succès :', response);
|
||||||
setPopupMessage('Le mandat SEPA a été uploadé avec succès.');
|
showNotification(
|
||||||
setPopupVisible(true);
|
'Le mandat SEPA a été uploadé avec succès.',
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
setReloadFetch(true);
|
setReloadFetch(true);
|
||||||
closeSepaUploadModal();
|
closeSepaUploadModal();
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
logger.error("Erreur lors de l'upload du mandat SEPA :", error);
|
logger.error("Erreur lors de l'upload du mandat SEPA :", error);
|
||||||
setPopupMessage("Erreur lors de l'upload du mandat SEPA.");
|
showNotification(
|
||||||
setPopupVisible(true);
|
"Erreur lors de l'upload du mandat SEPA.",
|
||||||
|
'error',
|
||||||
|
'Erreur'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -321,21 +327,22 @@ export default function Page({ params: { locale } }) {
|
|||||||
archiveRegisterForm(id)
|
archiveRegisterForm(id)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
logger.debug('Success:', data);
|
logger.debug('Success:', data);
|
||||||
setPopupMessage(
|
showNotification(
|
||||||
"Le dossier d'inscription a été correctement archivé"
|
"Le dossier d'inscription a été correctement archivé",
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
);
|
);
|
||||||
setPopupVisible(true);
|
|
||||||
setRegistrationForms(
|
setRegistrationForms(
|
||||||
registrationForms.filter((fiche) => fiche.id !== id)
|
registrationForms.filter((fiche) => fiche.id !== id)
|
||||||
);
|
);
|
||||||
setReloadFetch(true);
|
setReloadFetch(true);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
logger.error('Error archiving data:', error);
|
showNotification(
|
||||||
setPopupMessage(
|
"Erreur lors de l'archivage du dossier d'inscription",
|
||||||
"Erreur lors de l'archivage du dossier d'inscription.\nContactez l'administrateur."
|
'error',
|
||||||
|
'Erreur'
|
||||||
);
|
);
|
||||||
setPopupVisible(true);
|
|
||||||
});
|
});
|
||||||
setConfirmPopupVisible(false);
|
setConfirmPopupVisible(false);
|
||||||
});
|
});
|
||||||
@ -350,16 +357,20 @@ export default function Page({ params: { locale } }) {
|
|||||||
sendRegisterForm(id)
|
sendRegisterForm(id)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
logger.debug('Success:', data);
|
logger.debug('Success:', data);
|
||||||
setPopupMessage("Le dossier d'inscription a été envoyé avec succès");
|
showNotification(
|
||||||
setPopupVisible(true);
|
"Le dossier d'inscription a été envoyé avec succès",
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
setReloadFetch(true);
|
setReloadFetch(true);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
logger.error('Error archiving data:', error);
|
logger.error('Error archiving data:', error);
|
||||||
setPopupMessage(
|
showNotification(
|
||||||
"Erreur lors de l'envoi du dossier d'inscription.\nContactez l'administrateur."
|
"Erreur lors de l'envoi du dossier d'inscription",
|
||||||
|
'error',
|
||||||
|
'Erreur'
|
||||||
);
|
);
|
||||||
setPopupVisible(true);
|
|
||||||
});
|
});
|
||||||
setConfirmPopupVisible(false);
|
setConfirmPopupVisible(false);
|
||||||
});
|
});
|
||||||
@ -836,12 +847,6 @@ export default function Page({ params: { locale } }) {
|
|||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
<Popup
|
|
||||||
isOpen={popupVisible}
|
|
||||||
message={popupMessage}
|
|
||||||
onConfirm={() => setPopupVisible(false)}
|
|
||||||
uniqueConfirmButton={true}
|
|
||||||
/>
|
|
||||||
<Popup
|
<Popup
|
||||||
isOpen={confirmPopupVisible}
|
isOpen={confirmPopupVisible}
|
||||||
message={confirmPopupMessage}
|
message={confirmPopupMessage}
|
||||||
|
|||||||
@ -7,35 +7,23 @@ import { useSearchParams } from 'next/navigation';
|
|||||||
import InputTextIcon from '@/components/InputTextIcon';
|
import InputTextIcon from '@/components/InputTextIcon';
|
||||||
import Loader from '@/components/Loader'; // Importez le composant Loader
|
import Loader from '@/components/Loader'; // Importez le composant Loader
|
||||||
import Button from '@/components/Button'; // Importez le composant Button
|
import Button from '@/components/Button'; // Importez le composant Button
|
||||||
import Popup from '@/components/Popup'; // Importez le composant Popup
|
|
||||||
import { User } from 'lucide-react'; // Importez directement les icônes nécessaires
|
import { User } from 'lucide-react'; // Importez directement les icônes nécessaires
|
||||||
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
||||||
import { useCsrfToken } from '@/context/CsrfContext';
|
import { useCsrfToken } from '@/context/CsrfContext';
|
||||||
import { sendNewPassword } from '@/app/actions/authAction';
|
import { sendNewPassword } from '@/app/actions/authAction';
|
||||||
import logger from '@/utils/logger';
|
import logger from '@/utils/logger';
|
||||||
|
import { useNotification } from '@/context/NotificationContext';
|
||||||
const useFakeData = process.env.NEXT_PUBLIC_USE_FAKE_DATA === 'true';
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
const { showNotification } = useNotification();
|
||||||
const [errorMessage, setErrorMessage] = useState('');
|
const [errorMessage, setErrorMessage] = useState('');
|
||||||
const [userFieldError, setUserFieldError] = useState('');
|
const [userFieldError, setUserFieldError] = useState('');
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [popupVisible, setPopupVisible] = useState(false);
|
|
||||||
const [popupMessage, setPopupMessage] = useState('');
|
|
||||||
const [popupConfirmAction, setPopupConfirmAction] = useState(null);
|
const [popupConfirmAction, setPopupConfirmAction] = useState(null);
|
||||||
const csrfToken = useCsrfToken();
|
const csrfToken = useCsrfToken();
|
||||||
|
|
||||||
function validate(formData) {
|
function validate(formData) {
|
||||||
if (useFakeData) {
|
|
||||||
setTimeout(() => {
|
|
||||||
setUserFieldError('');
|
|
||||||
setErrorMessage('');
|
|
||||||
setPopupMessage('Mot de passe réinitialisé avec succès !');
|
|
||||||
setPopupConfirmAction(() => () => setPopupVisible(false));
|
|
||||||
setPopupVisible(true);
|
|
||||||
}, 1000); // Simule un délai de traitement
|
|
||||||
} else {
|
|
||||||
const data = { email: formData.get('email') };
|
const data = { email: formData.get('email') };
|
||||||
sendNewPassword(data, csrfToken)
|
sendNewPassword(data, csrfToken)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
@ -43,15 +31,21 @@ export default function Page() {
|
|||||||
setUserFieldError('');
|
setUserFieldError('');
|
||||||
setErrorMessage('');
|
setErrorMessage('');
|
||||||
if (data.errorMessage === '') {
|
if (data.errorMessage === '') {
|
||||||
setPopupMessage(data.message);
|
showNotification(
|
||||||
setPopupConfirmAction(() => () => setPopupVisible(false));
|
data.message,
|
||||||
setPopupVisible(true);
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
if (data.errorFields) {
|
if (data.errorFields) {
|
||||||
setUserFieldError(data.errorFields.email);
|
setUserFieldError(data.errorFields.email);
|
||||||
}
|
}
|
||||||
if (data.errorMessage) {
|
if (data.errorMessage) {
|
||||||
setErrorMessage(data.errorMessage);
|
showNotification(
|
||||||
|
data.errorMessage,
|
||||||
|
'error',
|
||||||
|
'Erreur'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -61,7 +55,6 @@ export default function Page() {
|
|||||||
logger.debug(error);
|
logger.debug(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (isLoading === true) {
|
if (isLoading === true) {
|
||||||
return <Loader />; // Affichez le composant Loader
|
return <Loader />; // Affichez le composant Loader
|
||||||
@ -112,12 +105,6 @@ export default function Page() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Popup
|
|
||||||
isOpen={popupVisible}
|
|
||||||
message={popupMessage}
|
|
||||||
onConfirm={popupConfirmAction}
|
|
||||||
onCancel={() => setPopupVisible(false)}
|
|
||||||
/>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,34 +8,26 @@ import { useSearchParams, useRouter } from 'next/navigation';
|
|||||||
import InputTextIcon from '@/components/InputTextIcon';
|
import InputTextIcon from '@/components/InputTextIcon';
|
||||||
import Loader from '@/components/Loader'; // Importez le composant Loader
|
import Loader from '@/components/Loader'; // Importez le composant Loader
|
||||||
import Button from '@/components/Button'; // Importez le composant Button
|
import Button from '@/components/Button'; // Importez le composant Button
|
||||||
import Popup from '@/components/Popup';
|
|
||||||
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
||||||
import { KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires
|
import { KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires
|
||||||
import { useCsrfToken } from '@/context/CsrfContext';
|
import { useCsrfToken } from '@/context/CsrfContext';
|
||||||
import { getResetPassword, resetPassword } from '@/app/actions/authAction';
|
import { getResetPassword, resetPassword } from '@/app/actions/authAction';
|
||||||
import logger from '@/utils/logger';
|
import logger from '@/utils/logger';
|
||||||
|
import { useNotification } from '@/context/NotificationContext';
|
||||||
const useFakeData = process.env.NEXT_PUBLIC_USE_FAKE_DATA === 'true';
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
const { showNotification } = useNotification();
|
||||||
const uuid = searchParams.get('uuid');
|
const uuid = searchParams.get('uuid');
|
||||||
const [errorMessage, setErrorMessage] = useState('');
|
const [errorMessage, setErrorMessage] = useState('');
|
||||||
const [password1FieldError, setPassword1FieldError] = useState('');
|
const [password1FieldError, setPassword1FieldError] = useState('');
|
||||||
const [password2FieldError, setPassword2FieldError] = useState('');
|
const [password2FieldError, setPassword2FieldError] = useState('');
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [popupVisible, setPopupVisible] = useState(false);
|
|
||||||
const [popupMessage, setPopupMessage] = useState('');
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const csrfToken = useCsrfToken();
|
const csrfToken = useCsrfToken();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (useFakeData) {
|
|
||||||
setTimeout(() => {
|
|
||||||
setIsLoading(false);
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
getResetPassword(uuid)
|
getResetPassword(uuid)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
logger.debug('Success:', data);
|
logger.debug('Success:', data);
|
||||||
@ -52,32 +44,35 @@ export default function Page() {
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
logger.error('Error fetching data:', error);
|
logger.error('Error fetching data:', error);
|
||||||
});
|
});
|
||||||
}
|
}, []);
|
||||||
}, []);
|
|
||||||
|
|
||||||
function validate(formData) {
|
function validate(formData) {
|
||||||
if (useFakeData) {
|
|
||||||
setTimeout(() => {
|
|
||||||
setPopupMessage('Mot de passe réinitialisé avec succès');
|
|
||||||
setPopupVisible(true);
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
const data = {
|
const data = {
|
||||||
password1: formData.get('password1'),
|
password1: formData.get('password1'),
|
||||||
password2: formData.get('password2'),
|
password2: formData.get('password2'),
|
||||||
};
|
};
|
||||||
resetPassword(uuid, data, csrfToken)
|
resetPassword(uuid, data, csrfToken)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
logger.debug('Success:', data);
|
if (data.errorMessage === '') {
|
||||||
setPassword1FieldError('');
|
setPassword1FieldError('');
|
||||||
setPassword2FieldError('');
|
setPassword2FieldError('');
|
||||||
setErrorMessage('');
|
setErrorMessage('');
|
||||||
if (data.errorMessage === '') {
|
|
||||||
setPopupMessage(data.message);
|
logger.debug('Success:', data);
|
||||||
setPopupVisible(true);
|
showNotification(
|
||||||
|
data.message,
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
|
router.push(`${FE_USERS_LOGIN_URL}`);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (data.errorMessage) {
|
if (data.errorMessage) {
|
||||||
setErrorMessage(data.errorMessage);
|
showNotification(
|
||||||
|
data.errorMessage,
|
||||||
|
'error',
|
||||||
|
'Erreur'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (data.errorFields) {
|
if (data.errorFields) {
|
||||||
setPassword1FieldError(data.errorFields.password1);
|
setPassword1FieldError(data.errorFields.password1);
|
||||||
@ -91,25 +86,12 @@ export default function Page() {
|
|||||||
logger.debug(error);
|
logger.debug(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (isLoading === true) {
|
if (isLoading === true) {
|
||||||
return <Loader />; // Affichez le composant Loader
|
return <Loader />; // Affichez le composant Loader
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Popup
|
|
||||||
isOpen={popupVisible}
|
|
||||||
setIsOpen={setPopupVisible}
|
|
||||||
message={popupMessage}
|
|
||||||
onConfirm={() => {
|
|
||||||
setPopupVisible(false);
|
|
||||||
router.push(`${FE_USERS_LOGIN_URL}`);
|
|
||||||
}}
|
|
||||||
onCancel={() => setPopupVisible(false)}
|
|
||||||
uniqueConfirmButton={true}
|
|
||||||
popupClassName="w-full max-w-xs sm:max-w-md"
|
|
||||||
/>
|
|
||||||
<div className="container max mx-auto p-4">
|
<div className="container max mx-auto p-4">
|
||||||
<div className="flex justify-center mb-4">
|
<div className="flex justify-center mb-4">
|
||||||
<Logo className="h-150 w-150" />
|
<Logo className="h-150 w-150" />
|
||||||
|
|||||||
@ -8,23 +8,22 @@ import { useSearchParams, useRouter } from 'next/navigation';
|
|||||||
import InputTextIcon from '@/components/InputTextIcon';
|
import InputTextIcon from '@/components/InputTextIcon';
|
||||||
import Loader from '@/components/Loader'; // Importez le composant Loader
|
import Loader from '@/components/Loader'; // Importez le composant Loader
|
||||||
import Button from '@/components/Button'; // Importez le composant Button
|
import Button from '@/components/Button'; // Importez le composant Button
|
||||||
import Popup from '@/components/Popup'; // Importez le composant Popup
|
|
||||||
import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires
|
import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires
|
||||||
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
import { FE_USERS_LOGIN_URL } from '@/utils/Url';
|
||||||
import { useCsrfToken } from '@/context/CsrfContext';
|
import { useCsrfToken } from '@/context/CsrfContext';
|
||||||
import { subscribe } from '@/app/actions/authAction';
|
import { subscribe } from '@/app/actions/authAction';
|
||||||
import logger from '@/utils/logger';
|
import logger from '@/utils/logger';
|
||||||
|
import { useNotification } from '@/context/NotificationContext';
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
const { showNotification } = useNotification();
|
||||||
|
|
||||||
const [errorMessage, setErrorMessage] = useState('');
|
const [errorMessage, setErrorMessage] = useState('');
|
||||||
const [userFieldError, setUserFieldError] = useState('');
|
const [userFieldError, setUserFieldError] = useState('');
|
||||||
const [password1FieldError, setPassword1FieldError] = useState('');
|
const [password1FieldError, setPassword1FieldError] = useState('');
|
||||||
const [password2FieldError, setPassword2FieldError] = useState('');
|
const [password2FieldError, setPassword2FieldError] = useState('');
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [popupVisible, setPopupVisible] = useState(false);
|
|
||||||
const [popupMessage, setPopupMessage] = useState('');
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const csrfToken = useCsrfToken();
|
const csrfToken = useCsrfToken();
|
||||||
@ -52,13 +51,19 @@ export default function Page() {
|
|||||||
setErrorMessage('');
|
setErrorMessage('');
|
||||||
if (isOK(data)) {
|
if (isOK(data)) {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
setPopupMessage(data.message);
|
showNotification(
|
||||||
setPopupVisible(true);
|
data.message,
|
||||||
|
'success',
|
||||||
|
'Succès'
|
||||||
|
);
|
||||||
|
router.push(`${FE_USERS_LOGIN_URL}`);
|
||||||
} else {
|
} else {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
if (data.errorMessage) {
|
showNotification(
|
||||||
setErrorMessage(data.errorMessage);
|
data.errorMessage,
|
||||||
}
|
'error',
|
||||||
|
'Erreur'
|
||||||
|
);
|
||||||
if (data.errorFields) {
|
if (data.errorFields) {
|
||||||
setUserFieldError(data.errorFields.email);
|
setUserFieldError(data.errorFields.email);
|
||||||
setPassword1FieldError(data.errorFields.password1);
|
setPassword1FieldError(data.errorFields.password1);
|
||||||
@ -143,18 +148,6 @@ export default function Page() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Popup
|
|
||||||
isOpen={popupVisible}
|
|
||||||
setIsOpen={setPopupVisible}
|
|
||||||
message={popupMessage}
|
|
||||||
onConfirm={() => {
|
|
||||||
setPopupVisible(false);
|
|
||||||
router.push(`${FE_USERS_LOGIN_URL}`);
|
|
||||||
}}
|
|
||||||
onCancel={() => setPopupVisible(false)}
|
|
||||||
uniqueConfirmButton={true}
|
|
||||||
popupClassName="w-full max-w-xs sm:max-w-md"
|
|
||||||
/>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user