Django rest framework: пользовательские разрешения объектов не работают

Моя проблема очень проста: я пытаюсь создать некоторые пользовательские разрешения для моего django rest API. Вот мой код (permission.py) :

class UserPermissions(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        return obj == request.user

Я просто хочу, чтобы пользователи могли получать, удалять и обновлять только свой собственный аккаунт. Проблема в том, что я думаю, что мой код не читается Django. Я пробовал всегда возвращать false (без какого-либо условия), но это ничего не дает. Я также пробовал выводить отладочное сообщение в начале файла, но это ничего не дало.

(Мой файл permissions.py находится в корне моего приложения) $

Вот мое представление пользователя (UserView.py) :

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by("-date_joined")
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]
    swagger_tag = ["User"]

class LoginView(KnoxLoginView):
    """
    API endpoint allowing the user to login and receive a token
    """

    permission_classes = [
        permissions.AllowAny,
    ]

    @swagger_auto_schema(request_body=AuthTokenSerializer)
    def post(self, request, format=None):
        serializer = AuthTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data["user"]
        login(request, user)
        return super(LoginView, self).post(request, format=None)

Как говорит @UtkucanBıyıklı в своем комментарии, вы должны указать разрешение в ViewSet:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated, UserPermissions]
    swagger_tag = ['User']
Вернуться на верх