diff --git a/apps/authorization/serializers/common.py b/apps/authorization/serializers/common.py index e19fdae2..07c561f8 100644 --- a/apps/authorization/serializers/common.py +++ b/apps/authorization/serializers/common.py @@ -77,7 +77,6 @@ class SignupSerializer(serializers.ModelSerializer): class ReconfirmSerializer(serializers.ModelSerializer): - email = serializers.EmailField(write_only=True) class Meta: model = account_models.User @@ -85,22 +84,28 @@ class ReconfirmSerializer(serializers.ModelSerializer): def validate_email(self, value): """Validate email""" - if not account_models.User.objects.filter(email=value).filter(email_confirmed=False).exists(): - raise serializers.ValidationError() + users = list(account_models.User.objects.filter(email=value.lower()).all()) + if not users: + raise serializers.ValidationError(detail='User with mentioned email does not exist.') + users = list(filter(lambda user: not user.email_confirmed, users)) + if not users: + raise serializers.ValidationError(detail='User with this email is confirmed.') return value def create(self, validated_data): """Override create method""" queryset = account_models.User.objects.all() - obj = get_object_or_404(queryset, email=validated_data.get('email').lower()) + email = validated_data.get('email').lower() + country_code = self.context.get('request').country_code + obj = get_object_or_404(queryset, email=email) if settings.USE_CELERY: tasks.send_confirm_email.delay( user_id=obj.id, - country_code=self.context.get('request').country_code) + country_code=country_code) else: tasks.send_confirm_email( user_id=obj.id, - country_code=self.context.get('request').country_code) + country_code=country_code) return obj diff --git a/apps/authorization/urls/common.py b/apps/authorization/urls/common.py index 213744d4..814ce836 100644 --- a/apps/authorization/urls/common.py +++ b/apps/authorization/urls/common.py @@ -29,7 +29,7 @@ urlpatterns_oauth2 = [ urlpatterns_jwt = [ path('signup/', views.SignUpView.as_view(), name='signup'), - path('signup/reconfirm', views.ReconfirmView.as_view(), name='signup-reconfirm'), + path('signup/reconfirm/', views.ReconfirmView.as_view(), name='signup-reconfirm'), path('signup/confirm///', views.ConfirmationEmailView.as_view(), name='signup-confirm'), path('login/', views.LoginByUsernameOrEmailView.as_view(), name='login'),