Files
Lovemap/app/auth/login/hooks/useActions.js
T

66 lines
1.2 KiB
JavaScript

import { useRouter } from 'next/navigation';
export const useActions = ({ setError, setIsLoading }) => {
const router = useRouter();
const handleSubmit = async (ev) => {
ev.preventDefault();
const formData = new FormData(ev.currentTarget);
const username = formData.get('username');
const password = formData.get('password');
if (!username || !password) {
return;
}
setIsLoading(true);
try {
const request = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
username,
password,
}),
});
const response = await request.json();
if (request.status == 404) {
setError('Utilisateur inconnu');
setIsLoading(false);
return;
}
if (request.status == 403) {
setError('Mauvais mot de passe');
setIsLoading(false);
return;
}
if (request.status == 500) {
setError('Erreur interne. Veuillez réessayer');
setIsLoading(false);
return;
}
const { token } = response;
localStorage.setItem('token', token);
router.push('/');
} catch (error) {
console.error(error);
setError('Erreur interne. Veuillez réessayer');
}
setIsLoading(false);
};
return {
handleSubmit,
};
};