Handle login errors
This commit is contained in:
@@ -2,20 +2,25 @@ import { useState, useContext } from "react";
|
|||||||
import styles from "./loginForm.module.css";
|
import styles from "./loginForm.module.css";
|
||||||
import Button from "../ui/button/button.jsx";
|
import Button from "../ui/button/button.jsx";
|
||||||
import Input from "../ui/input/input.jsx";
|
import Input from "../ui/input/input.jsx";
|
||||||
|
import Modal from "../ui/modal/modal.jsx";
|
||||||
import { useNavigate } from "react-router";
|
import { useNavigate } from "react-router";
|
||||||
import { AuthContext } from "../../contexts/auth/AuthContext.js";
|
import { AuthContext } from "../../contexts/auth/AuthContext.js";
|
||||||
|
|
||||||
|
|
||||||
function LoginForm({ className }) {
|
function LoginForm({ className }) {
|
||||||
|
|
||||||
|
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const { login } = useContext(AuthContext);
|
||||||
const [email, setEmail] = useState('');
|
const [email, setEmail] = useState('');
|
||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
let navigate = useNavigate();
|
const [open , setOpen] = useState(false);
|
||||||
const { login } = useContext(AuthContext);
|
|
||||||
|
async function handleSubmit() {
|
||||||
|
const res = await login(email, password);
|
||||||
|
if (res.status === 401 || res.status === 422) setOpen(true);
|
||||||
|
else navigate("/");
|
||||||
|
|
||||||
async function handleSubmit(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
await login(email, password);
|
|
||||||
navigate("/");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -37,6 +42,10 @@ function LoginForm({ className }) {
|
|||||||
<Button variant={"transparent"} onClick={() => navigate("/register")}>Vous n'avez pas de compte ?</Button>
|
<Button variant={"transparent"} onClick={() => navigate("/register")}>Vous n'avez pas de compte ?</Button>
|
||||||
<Button onClick={handleSubmit} variant={"default"}> Se connecter </Button>
|
<Button onClick={handleSubmit} variant={"default"}> Se connecter </Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<Modal title={"Impossible de se connecter"} open={open} onClose={() => setOpen(false)}>
|
||||||
|
<p>L'Email ou le mot de passe est incorrect</p>
|
||||||
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ export function AuthProvider({ children }) {
|
|||||||
|
|
||||||
const login = async (email, password) => {
|
const login = async (email, password) => {
|
||||||
const res = await loginFunction(email, password);
|
const res = await loginFunction(email, password);
|
||||||
if (!res || res.status !== 200) throw new Error("Login error");
|
const u = res.status === 200 ? await getUser() : null;
|
||||||
const u = await getUser();
|
if (u) setUser(u);
|
||||||
setUser(u);
|
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const logout = async () => {
|
const logout = async () => {
|
||||||
await logoutFunction();
|
await logoutFunction();
|
||||||
setUser(null);
|
setUser(null);
|
||||||
|
|||||||
@@ -15,17 +15,18 @@ export default async function login(email, password) {
|
|||||||
body: JSON.stringify({ email, password })
|
body: JSON.stringify({ email, password })
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('Code HTTP :', response.status);
|
const data = await response.json();
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Erreur HTTP ${response.status}`);
|
return {
|
||||||
|
status: response.status,
|
||||||
|
errors: data.errors || data.message
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
|
||||||
console.log('Connexion réussie ! Données utilisateur :', data);
|
|
||||||
|
|
||||||
return { status: response.status, data };
|
return { status: response.status, data };
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return error;
|
return { status: 500, error };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user