from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework_jwt.serializers import jwt_decode_handler from rest_framework import exceptions from django.utils.translation import ugettext as _ from crm.models import Consumer from rbac.models import UserProfile class MyTokenAuthentication(JSONWebTokenAuthentication): def authenticate_credentials(self, payload): """ 返回登陆人员(学员或管理员) """ id = payload['user_id'] if not id: msg = _('签名有误.') raise exceptions.AuthenticationFailed(msg) if 'type' in payload and payload['type'] == 'consumer': try: user = Consumer.objects.get(id=id) except Consumer.DoesNotExist: msg = _('消费者不存在') raise exceptions.AuthenticationFailed(msg) else: try: user = UserProfile.objects.get(id=id) except UserProfile.DoesNotExist: msg = _('管理员不存在') raise exceptions.AuthenticationFailed(msg) return user