Я реализую авторизацию и регистрацию в приложении, используя Fomik и Yup.
У меня есть локальный сервер на моем компьютере. Папка с этим сервером находится рядом с папкой моего проекта. Я просто запускаю сервер благодаря команде adonis serve. Когда сервер запущен. Я пишу в полях формы: имя пользователя, пароль и другие ... И затем, если проверка прошла успешно, я нажимаю кнопку «Отправить» и получаю ответ от моего локального сервера. Этот ответ содержит токен jwt.
Теперь во время проверки формы я просто проверяю, написано ли что-то в поле имени пользователя. Но мне все еще нужно проверить, является ли имя пользователя уникальным, если нет, а имя пользователя с таким именем уже зарегистрировано, то отобразить ошибку в предупреждении.
Как осуществить проверку уникальности имени пользователя и отобразить ошибку в моем случае?
Некоторая часть RegistrationForm. js:
const SignupForm = () => {
const history = useHistory();
const {handleSubmit, values, handleChange, errors, handleBlur, isSubmitting, setSubmitting} = useFormik({
initialValues: {
username: '',
password: '',
confirm_password: '',
first_name: '',
last_name: '',
phone:''
},
validateOnBlur: false,
validateOnchange: false,
validationSchema: yup.object().shape({
username: yup.string()
.required('This field is required'),
password: yup.string()
.required('This field is required')
.min(6, 'This password is too short')
.max(30, 'This passwors is too long'),
/.......
}),
onSubmit: async (formValues) => {
console.log('submit', formValues);
setSubmitting(true);
try {
const res = await api('api/auth/register', {
method:'POST',
body: JSON.stringify(formValues)
});
const token = res.token.token;
localStorage.setItem('myToken', token);
console.log('Result!',token);
history.push("/home");
} catch(e) {
console.error(e);
} finally {
setSubmitting(false);
}
},
});
return (
<form className="fform" onSubmit={handleSubmit}>
<SignupInput
label="username"
id="username"
inputProps={{
name:'username',
value: values.username,
onChange: handleChange,
onBlur: handleBlur,
disabled: isSubmitting,
}}
error={errors.username}
/.......
<button type="submit" disabled={isSubmitting}>Submit Form</button>
</form>
);
};