Django - Как объединить промежуточное ПО Authen и мое собственное промежуточное ПО?

У меня есть api, который требует Token в заголовках и пользователи должны иметь роль is_staff для обработки.

Вот моя model.py просьба прояснить насчет is_staff роли

class User(AbstractBaseUser, PermissionsMixin):
    """Custom user model that support using email instead of username"""
    email = models.EmailField(max_length=255, unique=True)
    name = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_employee = models.BooleanField(default=True)

    objects = UserManager()

    USERNAME_FIELD = 'email'

Вот api в моем views.py

class get_user_info_from_token(generics.GenericAPIView):
    permission_classes = (IsAuthenticated, )
    def get(self, request):        

        """ I put the below rows in middleware
       
        User = Token.objects.get(key = request.auth).user
        if User.is_staff: 
        """

        return HttpResponse("You are staff)

Вот мое промежуточное ПО:

class CustomMiddlware(object):
    ...
    def __call__(self, request):
        token = request.headers['Authorization'][6:]

        user = Token.objects.get(key=token).user
        if user.is_staff:
            response = self.get_response(request)
        else:
            return HttpResponseForbidden("You are not allowed")
    ...

У меня есть 2 вопроса:

1/ Я хочу поместить permission_classes = (IsAuthenticated, ) в мою промежуточную программу, чтобы упростить мой код. Но я не знаю, как это сделать.

2/ Более того, в моем промежуточном ПО я не могу запустить User = Token.objects.get(key = request.auth).user, так как получил эту ошибку AttributeError: 'WSGIRequest' object has no attribute 'auth'.

Вернуться на верх