diff --git a/frontend/public/img/bg_25.jpg b/frontend/public/img/bg_25.jpg deleted file mode 100644 index 0e0c2e6..0000000 Binary files a/frontend/public/img/bg_25.jpg and /dev/null differ diff --git a/frontend/public/img/bg_26.png b/frontend/public/img/bg_26.png new file mode 100644 index 0000000..c05959d Binary files /dev/null and b/frontend/public/img/bg_26.png differ diff --git a/frontend/src/components/auth/authForm.tsx b/frontend/src/components/auth/authForm.tsx index 64f0f32..f0d0156 100644 --- a/frontend/src/components/auth/authForm.tsx +++ b/frontend/src/components/auth/authForm.tsx @@ -1,15 +1,15 @@ -import { useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState } from 'react'; -import { handleCASTicket, loginUser, requestPasswordUser } from "../../services/requests/auth.service"; -import { Button } from "../ui/button"; -import { Input } from "../ui/input"; +import { handleCASTicket, loginUser, requestPasswordUser } from '../../services/requests/auth.service'; +import { Button } from '../ui/button'; +import { Input } from '../ui/input'; export const AuthForm = () => { const userRef = useRef(null); - const [formData, setFormData] = useState({ email: "", password: "" }); + const [formData, setFormData] = useState({ email: '', password: '' }); const [error, setError] = useState(null); const [casProcessed] = useState(() => { - return localStorage.getItem("casProcessed") === "true"; + return localStorage.getItem('casProcessed') === 'true'; }); useEffect(() => { @@ -21,7 +21,7 @@ export const AuthForm = () => { const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; - setFormData(prev => ({ ...prev, [name]: value })); + setFormData((prev) => ({ ...prev, [name]: value })); }; const handleLogin = async (e: React.FormEvent) => { @@ -30,12 +30,12 @@ export const AuthForm = () => { try { const token = await loginUser(formData.email, formData.password); if (token) { - localStorage.setItem("authToken", token); - window.location.href = "/home?login=true"; + localStorage.setItem('authToken', token); + window.location.href = '/home?login=true'; } } catch (err: any) { console.error(err); - setError("Échec de la connexion. Vérifie ton email et ton mot de passe."); + setError('Échec de la connexion. Vérifie ton email et ton mot de passe.'); } }; @@ -44,49 +44,48 @@ export const AuthForm = () => { const CAS_LOGIN_URL = import.meta.env.VITE_CAS_LOGIN_URL; const loginUrl = `${CAS_LOGIN_URL}?service=${encodeURIComponent(SERVICE_URL as string)}`; window.location.href = loginUrl; - localStorage.setItem("casProcessed", "false"); + localStorage.setItem('casProcessed', 'false'); }; const handleCASLogin = async () => { - if (window.location.pathname === "/home") return; - if (localStorage.getItem("casProcessed") === "true") return; + if (window.location.pathname === '/home') return; + if (localStorage.getItem('casProcessed') === 'true') return; - localStorage.setItem("casProcessed", "true"); + localStorage.setItem('casProcessed', 'true'); const urlParams = new URLSearchParams(window.location.search); - const ticket = urlParams.get("ticket"); + const ticket = urlParams.get('ticket'); if (ticket) { try { const { token } = await handleCASTicket(ticket); - localStorage.setItem("authToken", token); - setTimeout(() => window.location.href = "/home", 300); + localStorage.setItem('authToken', token); + setTimeout(() => (window.location.href = '/home'), 300); } catch (error) { - console.error("CAS Login failed:", error); - setError("Authentification CAS échouée. Réessaie."); + console.error('CAS Login failed:', error); + setError('Authentification CAS échouée. Réessaie.'); } } }; const handlePasswordReset = async () => { - const email = prompt("Entre ton adresse email pour réinitialiser ton mot de passe :"); - if (email && email.includes("@")) { + const email = prompt('Entre ton adresse email pour réinitialiser ton mot de passe :'); + if (email && email.includes('@')) { try { const res = await requestPasswordUser(email); - if (!res.ok) alert("Un lien de réinitialisation a été envoyé à ton adresse email !"); + if (!res.ok) alert('Un lien de réinitialisation a été envoyé à ton adresse email !'); } catch { alert("Erreur lors de l'envoi de l'email. Vérifie l'adresse."); } } else { - alert("Adresse email invalide."); + alert('Adresse email invalide.'); } }; return (
+ style={{ backgroundImage: "url('img/bg_26.png')" }}>

Connexion

@@ -96,7 +95,9 @@ export const AuthForm = () => {
- + { />
- + {
-

- ✉️ Nouveau ? Ton compte se crée via login + mot de passe. - Vérifie ton mail pour l'activer. + ✉️ Nouveau ? Ton compte se crée via login + mot de passe. Vérifie ton mail + pour l'activer.

@@ -144,8 +148,7 @@ export const AuthForm = () => {
@@ -153,4 +156,4 @@ export const AuthForm = () => {
); -} +}; diff --git a/frontend/src/components/auth/registrationForm.tsx b/frontend/src/components/auth/registrationForm.tsx index b8c45b4..9299558 100644 --- a/frontend/src/components/auth/registrationForm.tsx +++ b/frontend/src/components/auth/registrationForm.tsx @@ -1,23 +1,23 @@ -import { useEffect, useState } from "react"; -import { useLocation, useNavigate } from "react-router-dom"; +import { useEffect, useState } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; -import { completeRegistration } from "../../services/requests/auth.service"; -import { Button } from "../ui/button"; -import { Input } from "../ui/input"; +import { completeRegistration } from '../../services/requests/auth.service'; +import { Button } from '../ui/button'; +import { Input } from '../ui/input'; export const RegistrationForm = () => { const navigate = useNavigate(); const location = useLocation(); const [token, setToken] = useState(null); - const [password, setPassword] = useState(""); - const [confirmPassword, setConfirmPassword] = useState(""); + const [password, setPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); useEffect(() => { const queryParams = new URLSearchParams(location.search); - const t = queryParams.get("token"); + const t = queryParams.get('token'); setToken(t); }, [location.search]); @@ -26,32 +26,29 @@ export const RegistrationForm = () => { setError(null); if (!token) { - return setError("Token invalide ou manquant."); + return setError('Token invalide ou manquant.'); } if (password !== confirmPassword) { - return setError("Les mots de passe ne correspondent pas."); + return setError('Les mots de passe ne correspondent pas.'); } try { await completeRegistration(token, password); setSuccess(true); - setTimeout(() => navigate("/"), 2000); + setTimeout(() => navigate('/'), 2000); } catch (err: any) { - setError("Erreur lors de la validation : " + err.response.data.message); + setError('Erreur lors de la validation : ' + err.response.data.message); } }; return (
+ style={{ backgroundImage: "url('img/bg_26.png')" }}>
-

- Définir votre mot de passe -

+

Définir votre mot de passe

{error && (
@@ -80,7 +77,9 @@ export const RegistrationForm = () => {
-
- @@ -102,4 +103,4 @@ export const RegistrationForm = () => {
); -} +}; diff --git a/frontend/src/components/auth/resetPasswordForm.tsx b/frontend/src/components/auth/resetPasswordForm.tsx index bc4d03a..f70b829 100644 --- a/frontend/src/components/auth/resetPasswordForm.tsx +++ b/frontend/src/components/auth/resetPasswordForm.tsx @@ -10,9 +10,9 @@ export const ResetPasswordForm = () => { useEffect(() => { const urlParams = new URLSearchParams(window.location.search); - const tokenFromUrl = urlParams.get("token"); + const tokenFromUrl = urlParams.get('token'); if (!tokenFromUrl) { - alert("Token invalide ou manquant."); + alert('Token invalide ou manquant.'); } setToken(tokenFromUrl); }, []); @@ -20,17 +20,17 @@ export const ResetPasswordForm = () => { const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!token) { - alert("Lien invalide ou expiré."); + alert('Lien invalide ou expiré.'); return; } if (password.length < 6) { - alert("Le mot de passe doit contenir au moins 6 caractères."); + alert('Le mot de passe doit contenir au moins 6 caractères.'); return; } if (password !== confirmPassword) { - alert("Les mots de passe ne correspondent pas."); + alert('Les mots de passe ne correspondent pas.'); return; } @@ -38,11 +38,11 @@ export const ResetPasswordForm = () => { try { const response = await resetPasswordUser(token, password); if (response) { - alert("Mot de passe modifié avec succès."); - window.location.href = "/"; + alert('Mot de passe modifié avec succès.'); + window.location.href = '/'; } } catch { - alert("Erreur de connexion au serveur."); + alert('Erreur de connexion au serveur.'); } finally { setLoading(false); } @@ -51,8 +51,7 @@ export const ResetPasswordForm = () => { return (
+ style={{ backgroundImage: "url('img/bg_26.png')" }}>

Réinitialiser le mot de passe

@@ -87,9 +86,8 @@ export const ResetPasswordForm = () => {
diff --git a/frontend/src/pages/notFound.tsx b/frontend/src/pages/notFound.tsx index 072a11b..d5f7462 100644 --- a/frontend/src/pages/notFound.tsx +++ b/frontend/src/pages/notFound.tsx @@ -17,7 +17,7 @@ const NotFoundPage = () => {
+ style={{ backgroundImage: "url('img/bg_26.png')" }}>