check user input on signup

This commit is contained in:
Guillaume Dorce 2022-11-03 15:44:37 +01:00
parent eb286154c4
commit 0b8d60fa46
1 changed files with 24 additions and 1 deletions

View File

@ -6,11 +6,34 @@ import { Link, useNavigate } from 'react-router-dom';
export default () => { export default () => {
const navigate = useNavigate(); const navigate = useNavigate();
const checkPasswordComplexity = (password: string) => {
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$/;
return regex.test(password);
};
const checkEmailValidity = (email: string) => {
const regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
return regex.test(email);
};
const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => { const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault(); e.preventDefault();
const data = new FormData(e.target as HTMLFormElement); const data = new FormData(e.target as HTMLFormElement);
const email = data.get('email') as string;
const password = data.get('password') as string;
const passwordConfirmation = data.get('password-confirm') as string;
const firstName = data.get('firstName') as string;
const lastName = data.get('lastName') as string;
if (!/^[a-zA-Z]+$/.test(firstName)) return toastError('Le prénom ne doit contenir que des lettres.');
if (!/^[a-zA-Z]+$/.test(lastName)) return toastError('Le nom ne doit contenir que des lettres.');
if (!checkEmailValidity(email)) return toastError('L\'adresse e-mail n\'est pas valide.');
if (password !== passwordConfirmation) return toastError('Les mots de passe ne correspondent pas.');
if (!checkPasswordComplexity(password)) return toastError('Le mot de passe doit contenir au moins 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial.');
signup(data).then((data: Token) => { signup(data).then((data: Token) => {
toastSuccess('You have successfully signed up!'); toastSuccess('Vous êtes inscrit !');
navigate('/login'); navigate('/login');
}).catch((err) => { }).catch((err) => {
toastError(err as string); toastError(err as string);