mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
refactor: Affichage des notifications dans la partie "Users"
(subscribe)
This commit is contained in:
@ -361,7 +361,7 @@ class SubscribeView(APIView):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
retourErreur = error.returnMessage[error.BAD_URL]
|
retourErreur = ''
|
||||||
retour = ''
|
retour = ''
|
||||||
newProfilConnection = JSONParser().parse(request)
|
newProfilConnection = JSONParser().parse(request)
|
||||||
establishment_id = newProfilConnection['establishment_id']
|
establishment_id = newProfilConnection['establishment_id']
|
||||||
|
|||||||
@ -50,7 +50,7 @@ export default function Page() {
|
|||||||
);
|
);
|
||||||
} else if (data.errorFields) {
|
} else if (data.errorFields) {
|
||||||
showNotification(
|
showNotification(
|
||||||
data.errorFields.password1,
|
data.errorFields.password1 || data.errorFields.password2,
|
||||||
'error',
|
'error',
|
||||||
'Erreur'
|
'Erreur'
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
'use client';
|
'use client';
|
||||||
// src/app/pages/subscribe.js
|
|
||||||
|
|
||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import DjangoCSRFToken from '@/components/DjangoCSRFToken';
|
import DjangoCSRFToken from '@/components/DjangoCSRFToken';
|
||||||
import Logo from '@/components/Logo';
|
import Logo from '@/components/Logo';
|
||||||
import { useSearchParams, useRouter } from 'next/navigation';
|
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';
|
||||||
import Button from '@/components/Button'; // Importez le composant Button
|
import Button from '@/components/Button';
|
||||||
import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires
|
import { User, KeySquare } from 'lucide-react';
|
||||||
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';
|
||||||
@ -18,11 +17,6 @@ import { useNotification } from '@/context/NotificationContext';
|
|||||||
export default function Page() {
|
export default function Page() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const { showNotification } = useNotification();
|
const { showNotification } = useNotification();
|
||||||
|
|
||||||
const [errorMessage, setErrorMessage] = useState('');
|
|
||||||
const [userFieldError, setUserFieldError] = useState('');
|
|
||||||
const [password1FieldError, setPassword1FieldError] = useState('');
|
|
||||||
const [password2FieldError, setPassword2FieldError] = useState('');
|
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@ -30,10 +24,6 @@ export default function Page() {
|
|||||||
|
|
||||||
const establishment_id = searchParams.get('establishment_id');
|
const establishment_id = searchParams.get('establishment_id');
|
||||||
|
|
||||||
function isOK(data) {
|
|
||||||
return data.errorMessage === '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function subscribeFormSubmit(formData) {
|
function subscribeFormSubmit(formData) {
|
||||||
const data = {
|
const data = {
|
||||||
email: formData.get('login'),
|
email: formData.get('login'),
|
||||||
@ -45,12 +35,7 @@ export default function Page() {
|
|||||||
subscribe(data, csrfToken)
|
subscribe(data, csrfToken)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
logger.debug('Success:', data);
|
logger.debug('Success:', data);
|
||||||
setUserFieldError('');
|
if (data.message !== '') {
|
||||||
setPassword1FieldError('');
|
|
||||||
setPassword2FieldError('');
|
|
||||||
setErrorMessage('');
|
|
||||||
if (isOK(data)) {
|
|
||||||
setIsLoading(false);
|
|
||||||
showNotification(
|
showNotification(
|
||||||
data.message,
|
data.message,
|
||||||
'success',
|
'success',
|
||||||
@ -58,18 +43,21 @@ export default function Page() {
|
|||||||
);
|
);
|
||||||
router.push(`${FE_USERS_LOGIN_URL}`);
|
router.push(`${FE_USERS_LOGIN_URL}`);
|
||||||
} else {
|
} else {
|
||||||
setIsLoading(false);
|
if (data.errorMessage) {
|
||||||
showNotification(
|
showNotification(
|
||||||
data.errorMessage,
|
data.errorMessage,
|
||||||
'error',
|
'error',
|
||||||
'Erreur'
|
'Erreur'
|
||||||
);
|
);
|
||||||
if (data.errorFields) {
|
} else if (data.errorFields) {
|
||||||
setUserFieldError(data.errorFields.email);
|
showNotification(
|
||||||
setPassword1FieldError(data.errorFields.password1);
|
data.errorFields.email || data.errorFields.password1 || data.errorFields.password2,
|
||||||
setPassword2FieldError(data.errorFields.password2);
|
'error',
|
||||||
|
'Erreur'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setIsLoading(false);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
@ -80,7 +68,7 @@ export default function Page() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isLoading === true) {
|
if (isLoading === true) {
|
||||||
return <Loader />; // Affichez le composant Loader
|
return <Loader />;
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -105,7 +93,6 @@ export default function Page() {
|
|||||||
IconItem={User}
|
IconItem={User}
|
||||||
label="Identifiant"
|
label="Identifiant"
|
||||||
placeholder="Identifiant"
|
placeholder="Identifiant"
|
||||||
errorMsg={userFieldError}
|
|
||||||
className="w-full mb-5"
|
className="w-full mb-5"
|
||||||
/>
|
/>
|
||||||
<InputTextIcon
|
<InputTextIcon
|
||||||
@ -114,7 +101,6 @@ export default function Page() {
|
|||||||
IconItem={KeySquare}
|
IconItem={KeySquare}
|
||||||
label="Mot de passe"
|
label="Mot de passe"
|
||||||
placeholder="Mot de passe"
|
placeholder="Mot de passe"
|
||||||
errorMsg={password1FieldError}
|
|
||||||
className="w-full mb-5"
|
className="w-full mb-5"
|
||||||
/>
|
/>
|
||||||
<InputTextIcon
|
<InputTextIcon
|
||||||
@ -123,10 +109,8 @@ export default function Page() {
|
|||||||
IconItem={KeySquare}
|
IconItem={KeySquare}
|
||||||
label="Confirmation mot de passe"
|
label="Confirmation mot de passe"
|
||||||
placeholder="Confirmation mot de passe"
|
placeholder="Confirmation mot de passe"
|
||||||
errorMsg={password2FieldError}
|
|
||||||
className="w-full"
|
className="w-full"
|
||||||
/>
|
/>
|
||||||
<p className="text-red-500">{errorMessage}</p>
|
|
||||||
<div className="form-group-submit mt-4">
|
<div className="form-group-submit mt-4">
|
||||||
<Button
|
<Button
|
||||||
text="Enregistrer"
|
text="Enregistrer"
|
||||||
|
|||||||
Reference in New Issue
Block a user