Как запретить доступ к API django на основе булева поля is_active?

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

is_active = models.BooleanField(default=False)

Я хочу ограничить доступ автору, чья is_active=False.

Я могу использовать что-то подобное в каждом api:

get_object_or_404(uuid=id, is_active=True)

Но я хочу глобально ограничить доступ к UUID, чей is_active=false, вместо того, чтобы писать это утверждение в каждом api.

Есть ли способ сделать это?

Вы можете создать пользовательский класс разрешения и использовать его в качестве класса разрешения, где вы будете проверять, аутентифицирован ли пользователь, а также является ли он активным участником.

Что-то вроде этого :

class UserIsActive(permissions.BasePermission):

    def has_permission(self, request, view):
        if request.user.is_authenticated and request.user.is_active:
            return True
        return False

    def has_object_permission(self, request, view, obj):
        if request.user.is_active:
            return True
        return False

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