Django права доступа на группы объектов?

При построении на Django системы коллективных блогов, что лучше использовать для контроля доступа?



Надо: среди всех пользователей есть «владельцы» блогов, которые могут из всех остальных пользователей выбирать кто «может читать», «может править» сообщения и т.п.

Т.е. имеются группы объектов с владельцами и владельцы могут назначать права конкретным пользователям на эти группы объектов.



Как логичнее сделать систему прав?

Можно ли использовать для этого Sites и, например, создавать по поддомену на блог?

Или обратить внимание на пока еще плохо освещенный в документации «supports_object_permissions» в своем «authentication backend»? Есть ли примеры с последним?
  • Вопрос задан
  • 5875 просмотров
Пригласить эксперта
Ответы на вопрос 4
DmZ
@DmZ
Можно поделить на Sites.
Но, имхо, это будет не так гибко, если понадобится в будущем что-то поменять.
Лучше сделать свой бекэнд с авторизацией для конкретного объекта — тогда можно для каждой записи завести свои какие-то ACL которые будут проверяться в бэкенде.
Пример можно подсмотреть в тестах самого Django (class SimpleRowlevelBackend). К посту прикрепить какой-нить userlist, который может редактировать владелец поста, в бекэнде проверять наличие пользователя в списке и если запросили например view пермишн, а пользователя нет в viewlist этого объекта — возвращать false.
Ответ написан
variable
@variable
сама тема называется row level permission, освещена мало.
самим движком (до 1.2 точно) не поддерживалось.
есть различные решения, но не все заводятся искаропки…

packages.python.org/django-guardian/
code.google.com/p/django-granular-permissions/

на хабре был перевод этой статьи
Ответ написан
variable
@variable
сама тема называется row level permissions, освещена мало.
самим движком (до 1.2 точно) не поддерживалось.
есть различные решения, но не все заводятся искаропки…

packages.python.org/django-guardian/
code.google.com/p/django-granular-permissions/

на хабре была ссылка перевод этой статьи
djangoadvent.com/1.2/object-permissions/
но оказалась битой…
Ответ написан
EvoTech
@EvoTech
> Или обратить внимание на пока еще плохо освещенный в документации «supports_object_permissions» в своем «authentication backend»?

Да, обратить. В ваших условиях это, наверное, будет лучший вариант.
guardian не очень хорошо Вам (хотя и можно). Лучше уж github.com/maraujop/django-rules или bitbucket.org/jezdez/django-authority

django-authority не поддерживается, так что придется его освежить, или покопаться в форках.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы