from django.shortcuts import render from rest_framework import generics from rest_framework.response import Response from knox.models import AuthToken from django.contrib.auth.backends import AllowAllUsersModelBackend from core.serializers.login import LoginSerializer from core.serializers.register import RegisterSerializer from core.serializers.user import UserSerializer class RegisterAPI(generics.GenericAPIView): serializer_class = RegisterSerializer def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() user.is_active = False user.save() token = AuthToken.objects.create(user) return Response({ "user": UserSerializer(user, context=self.get_serializer_context()).data, "token": token[1] }) class LoginAPI(generics.GenericAPIView): serializer_class = LoginSerializer def post(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data token = AuthToken.objects.create(user) return Response({ "user": UserSerializer(user, context=self.get_serializer_context()).data, "token": token[1], }) def verify_user_and_activate(request, token): try: auth = AuthToken.objects.filter(digest=token).first() auth.user.is_active = True auth.user.save() return render( request, template_name='email/verification_success.html', context={ 'msg': 'Your Email is verified successfully and account has been activated.', 'status': 'Verification Successful!', } ) except: return render( request, template_name='email/verification_fail.html', context={ 'msg': 'There is something wrong with this link, unable to verify the user...', 'minor_msg': 'There is something wrong with this link...', 'status': 'Verification Failed!', } )