Как запретить доступ к 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