views.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # coding=utf-8
  2. from django.contrib.auth import get_user_model
  3. from rest_framework_jwt.views import ObtainJSONWebToken, VerifyJSONWebToken, RefreshJSONWebToken
  4. from rest_framework.serializers import ValidationError
  5. from utils import response_error, response_ok
  6. from apps.staff.serializers import AdminUserJWTSerializer
  7. User = get_user_model()
  8. class AdminUserLoginView(ObtainJSONWebToken):
  9. serializer_class = AdminUserJWTSerializer
  10. def post(self, request, *args, **kwargs):
  11. try:
  12. ser = self.serializer_class(data=request.data)
  13. ser.request = request
  14. if ser.is_valid(raise_exception=True):
  15. return response_ok(ser.validated_data)
  16. except ValidationError as e:
  17. return response_error(e.detail['error'][0])
  18. class AdminUserVerifyTokenView(VerifyJSONWebToken):
  19. def post(self, request, *args, **kwargs):
  20. try:
  21. ser = self.serializer_class(data=request.data)
  22. if ser.is_valid(raise_exception=True):
  23. return response_ok({'token': ser.validated_data['token']})
  24. except ValidationError as e:
  25. return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']')
  26. class AdminUserRefreshTokenView(RefreshJSONWebToken):
  27. def post(self, request, *args, **kwargs):
  28. try:
  29. ser = self.serializer_class(data=request.data)
  30. if ser.is_valid(raise_exception=True):
  31. return response_ok({'token': ser.validated_data['token']})
  32. except ValidationError as e:
  33. return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']')