# coding=utf-8 from django.contrib.auth import get_user_model from rest_framework_jwt.views import ObtainJSONWebToken, VerifyJSONWebToken, RefreshJSONWebToken from rest_framework.serializers import ValidationError from rest_framework.views import APIView from utils import response_error, response_ok from utils.permission import IsAdministrator from utils.empower import checkLicence from apps.staff.serializers import AdminUserJWTSerializer from utils.exceptions import CustomError User = get_user_model() class AdminUserLoginView(ObtainJSONWebToken): serializer_class = AdminUserJWTSerializer def post(self, request, *args, **kwargs): #if not checkLicence(): # raise CustomError(u'授权失败!') try: ser = self.serializer_class(data=request.data) ser.request = request if ser.is_valid(raise_exception=True): return response_ok(ser.validated_data) except ValidationError as e: return response_error(e.detail['error'][0]) class AdminUserVerifyTokenView(VerifyJSONWebToken): def post(self, request, *args, **kwargs): try: ser = self.serializer_class(data=request.data) if ser.is_valid(raise_exception=True): return response_ok({'token': ser.validated_data['token']}) except ValidationError as e: return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']') class AdminUserRefreshTokenView(RefreshJSONWebToken): def post(self, request, *args, **kwargs): try: ser = self.serializer_class(data=request.data) if ser.is_valid(raise_exception=True): return response_ok({'token': ser.validated_data['token']}) except ValidationError as e: return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']') class LogoutView(APIView): permission_classes = [IsAdministrator, ] def get(self, request): User.objects.filter(pk=request.user.pk).update(status=User.OFFLINE) return response_ok()