Проверка существования пользователя Djoser по электронной почте
В настоящее время я разрабатываю экран входа в систему, где я использую djoser
для аутентификации.
Я уже использую конечные точки /users/
и /token/login/
для создания и входа пользователей соответственно во фронтенде (JS fetch
) и знаю, что /users/
вернет сообщение об ошибке, если пользователь уже существует (которое я отображаю с помощью react-hook-form).
Мой вопрос: есть ли способ проверить, существует ли уже пользователь с его электронной почтой (без попытки создать учетную запись и выяснить это из сообщения об ошибке)
Из того, что я нашел, Djoser не предоставляет способа проверить, существует ли письмо, поэтому я написал APIView
class CheckEmail(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]
def get(self, request, format=None):
email = request.GET.get('email')
user = UserAccount.objects.filter(email=email)
if user:
return Response('Email exists')
else:
return Response('Welcome aboard!')
и использовал запрос get с Yup и Formik:
const LoginSchema = Yup.object().shape({
checkEmail: Yup.boolean().default(true),
email: Yup.string()
.email("Please enter valid email")
.required("Email is required")
.when("checkEmail", {
is: true,
then: Yup.string()
.test({
message: () => "Email already exists",
test: async(email) => {
if(email) {
try {
let response = await axios.get(`http://localhost:8000/accounts/users/check_email/?email=${email}`);
if (response.data === 'Welcome aboard!') {
return true;
} else {
return false;
}
} catch (error) {
//console.log(error);
}
}
}
})
}),
Надеюсь, это поможет