59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
import random
|
|
|
|
from rest_framework import generics, views
|
|
from rest_framework.response import Response
|
|
|
|
from rest_framework_simplejwt.tokens import RefreshToken
|
|
from rest_framework_simplejwt.views import TokenObtainPairView
|
|
|
|
from core.apps.accounts import serializers
|
|
from core.apps.accounts import models
|
|
from core.apps.accounts.cache import cache_user_credentials, cache_user_confirmation_code
|
|
from core.apps.accounts.tasks import send_confirmation_email
|
|
|
|
|
|
class RegisterApiView(generics.GenericAPIView):
|
|
serializer_class = serializers.RegisterSerializer
|
|
queryset = models.User.objects.all()
|
|
|
|
def post(self, request):
|
|
serializer = self.serializer_class(data=request.data, context={"request": request})
|
|
if serializer.is_valid(raise_exception=True):
|
|
data = serializer.validated_data
|
|
email = data['email']
|
|
cache_user_credentials(
|
|
email=email, password=data['password'],
|
|
passport_id=data['passport_id'], pnfl=data['pnfl'], time=60*5
|
|
)
|
|
code = ''.join([str(random.randint(0, 100)%10) for _ in range(5)])
|
|
cache_user_confirmation_code(
|
|
email=email, code=code, time=60*5
|
|
)
|
|
send_confirmation_email.delay(email, code)
|
|
return Response(
|
|
{'success': True, 'message': "code sent"},
|
|
status=200
|
|
)
|
|
|
|
|
|
class ConfirmUserApiView(generics.GenericAPIView):
|
|
serializer_class = serializers.ConfirmUserSerializer
|
|
queryset = models.User.objects.all()
|
|
|
|
def post(self, request):
|
|
serializer = self.serializer_class(data=request.data)
|
|
if serializer.is_valid(raise_exception=True):
|
|
user = serializer.save()
|
|
token = RefreshToken.for_user(user)
|
|
return Response(
|
|
{'access': str(token.access_token), 'refresh': str(token)},
|
|
status=200
|
|
)
|
|
return Response(
|
|
{'success': False, 'error_message': serializer.errors},
|
|
status=400
|
|
)
|
|
|
|
|
|
class CustomTokenObtainPairView(TokenObtainPairView):
|
|
serializer_class = serializers.CustomTokenObtainPairSerializer |