views.py 1.5 KB

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