示例#1
0
    def authenticate_credentials(payload, request):
        user_id = payload.get('user_id', '')
        role = payload.get('role', '')

        if '' in (user_id, role):
            msg = _('Invalid payload.')
            raise exceptions.AuthenticationFailed(msg)

        if role == 'commerce':
            v = cache.hget('user:user', user_id)
            try:
                obj = json.loads(v)
                user = User.init_from_dict(obj)
            except json.JSONDecodeError:
                return None
        elif role == 'proxy':
            try:
                user = Proxy.objects.get(id=user_id)
            except Proxy.DoesNotExist:
                return None
        else:
            try:
                user = Channel.objects.get(id=user_id)
            except Channel.DoesNotExist:
                return None

        return user