diff --git a/frontend/Design/image.png b/frontend/Design/image.png new file mode 100644 index 0000000..41aaeb4 Binary files /dev/null and b/frontend/Design/image.png differ diff --git a/frontend/src/pages/Connexion.jsx b/frontend/src/pages/Connexion.jsx index b6a25a0..7c75dea 100644 --- a/frontend/src/pages/Connexion.jsx +++ b/frontend/src/pages/Connexion.jsx @@ -1,73 +1,149 @@ import { useState } from 'react' -import { Link } from 'react-router-dom' +import { Link, useNavigate, useLocation } from 'react-router-dom' +import { loginApi } from '../services/auth' export default function Connexion() { + const navigate = useNavigate() + const location = useLocation() + const justRegistered = location.state?.registered === true const [form, setForm] = useState({ email: '', password: '' }) + const [showPassword, setShowPassword] = useState(false) + const [error, setError] = useState('') + const [loading, setLoading] = useState(false) const handleChange = (e) => setForm({ ...form, [e.target.name]: e.target.value }) - const handleSubmit = (e) => { + const handleSubmit = async (e) => { e.preventDefault() - // TODO: connecter au backend - alert(`Connexion avec ${form.email}`) + setError('') + setLoading(true) + try { + const { token, user } = await loginApi(form) + localStorage.setItem('token', token) + localStorage.setItem('user', JSON.stringify(user)) + if (user.role === 'ADMIN') navigate('/admin') + else if (user.role === 'EMPLOYEE') navigate('/employe') + else navigate('/participation') + } catch (err) { + setError(err.message) + } finally { + setLoading(false) + } } return ( -
Con - - nexion à votre espace
+Connexion à votre espace
+