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']