@raiboon

Как управлять разрешениями в django?

К примеру, мне нужен функционал разрешений-фильтрации на просмотр. Такого в django нет.
Как его реализовать?
Примеры. Есть автор, он может просматривать все опубликованные материалы и все свои - в т.ч. неопубликованные и непубличные материалы.
Неавторизованный может просматривать только публичные опубликованные материалы.
Админы могут просматривать абсолютно любые записи.
Можно эту логику засунуть во все вьюхи и тэги. Но получается дублирование кода. Можно наследоваться от вьюхи с переопределенным get_context_data. Уже лучше. Но всё равно, можно "ошибиться". Но опять дублирование найдется в каком-нибудь template tag - к примеру случайные топики в сайдбаре.
Самым красивым вариантом я вижу переопределить objects у модели. Это очень красиво. Но без костылей не получится получить пользователя во внутренностях модели.

Как правильно?
  • Вопрос задан
  • 2374 просмотра
Пригласить эксперта
Ответы на вопрос 1
@FireGM
Можно наследоваться от вьюхи с переопределенным get_context_data.

Видимо, вы используете CBV. Просто сделайте миксин с переопределённым get_queryset. Добавьте туда фильтрацию с Q, если пользователь авторизован.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы