30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
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 |