from rest_framework.views import APIView from rest_framework.generics import GenericAPIView from rest_framework.response import Response from rest_framework import status from django.contrib.auth import authenticate from utils.JWTAuthentication_diy import get_token, MyJWTAuthentication from utils.permissions import RegisterViewPermission from .serializers import RegisterViewSerializer, LoginViewSerializer # Create your views here. class LoginView(APIView): def post(self, request): serializer = LoginViewSerializer(data=request.data) serializer.is_valid(raise_exception=True) request_data = serializer.validated_data user = authenticate(**request_data) if user is not None and user.is_active: if user.is_superuser: token = get_token(user) return Response(token) if request_data["modules"] == "pestanalysis" and user.user_modules == 1: token = get_token(user) return Response(token) else: return Response(data={"msg": "账户无权限进入该模块", "data": ""}, status=status.HTTP_401_UNAUTHORIZED) else: return Response(data={"msg": "登录验证失败", "data": ""}, status=status.HTTP_401_UNAUTHORIZED) class RegisterView(GenericAPIView): authentication_classes = [MyJWTAuthentication] serializer_class = RegisterViewSerializer permission_classes = [RegisterViewPermission] def post(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data)