Проверка существования пользователя 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);
            }
          }
        }
      })
  }),   

Надеюсь, это поможет

Вернуться на верх