Resend confirmation email method
This commit is contained in:
parent
516c4458ac
commit
9793c0a49f
|
|
@ -4,7 +4,7 @@ from django.contrib.auth import authenticate
|
|||
from django.contrib.auth import password_validation as password_validators
|
||||
from django.db.models import Q
|
||||
from rest_framework import serializers
|
||||
from rest_framework import validators as rest_validators
|
||||
from rest_framework.generics import get_object_or_404
|
||||
|
||||
from account import models as account_models
|
||||
from authorization import tasks
|
||||
|
|
@ -76,6 +76,34 @@ class SignupSerializer(serializers.ModelSerializer):
|
|||
return obj
|
||||
|
||||
|
||||
class ReconfirmSerializer(serializers.ModelSerializer):
|
||||
email = serializers.EmailField(write_only=True)
|
||||
|
||||
class Meta:
|
||||
model = account_models.User
|
||||
fields = ('email',)
|
||||
|
||||
def validate_email(self, value):
|
||||
"""Validate email"""
|
||||
if not account_models.User.objects.filter(email=value).filter(email_confirmed=False).exists():
|
||||
raise serializers.ValidationError()
|
||||
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())
|
||||
if settings.USE_CELERY:
|
||||
tasks.send_confirm_email.delay(
|
||||
user_id=obj.id,
|
||||
country_code=self.context.get('request').country_code)
|
||||
else:
|
||||
tasks.send_confirm_email(
|
||||
user_id=obj.id,
|
||||
country_code=self.context.get('request').country_code)
|
||||
return obj
|
||||
|
||||
|
||||
class LoginByUsernameOrEmailSerializer(SourceSerializerMixin,
|
||||
serializers.ModelSerializer):
|
||||
"""Serializer for login user"""
|
||||
|
|
|
|||
|
|
@ -29,6 +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/confirm/<uidb64>/<token>/', views.ConfirmationEmailView.as_view(),
|
||||
name='signup-confirm'),
|
||||
path('login/', views.LoginByUsernameOrEmailView.as_view(), name='login'),
|
||||
|
|
|
|||
|
|
@ -164,6 +164,17 @@ class SignUpView(generics.GenericAPIView):
|
|||
return Response(status=status.HTTP_201_CREATED)
|
||||
|
||||
|
||||
class ReconfirmView(generics.CreateAPIView):
|
||||
""" Resends confirmation email whether user's still not confirmed """
|
||||
permission_classes = (permissions.AllowAny,)
|
||||
serializer_class = serializers.ReconfirmSerializer
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
return Response(status=status.HTTP_201_CREATED)
|
||||
|
||||
|
||||
class ConfirmationEmailView(JWTGenericViewMixin):
|
||||
"""View for confirmation email"""
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user