[OG] Полностью закрыть доступ в приватные группы

Главные вкладки

Аватар пользователя graker graker 7 апреля 2011 в 9:05

Всем привет.

Такая проблема. На сайте есть роль "глобальный модератор". У него есть право отредактировать/удалить любую ноду определенного типа (в том числе - group node). При этом у него нет права видеть приватные группы organic groups. Однако из-за права на удаление чего угодно, модератор может редактировать/удалять ноды в закрытых группах (и сами группы) по прямым ссылкам. А хотелось бы, чтобы модератор мог удалять и редактировать только те ноды, к которым у него есть доступ на просмотр, а из закрытых групп - нет. В идеале хотелось бы вообще запретить видеть закрытые группы всем, вплоть до user 1.

Кто как решал такую задачу?

Мне пока в голову пришло только радикальное лобовое решение: в hook_init() проверять групповой контекст, и если юзер в контексте закрытой группы и не является ее членом - drupal_access_denied(). Но ведь должно же быть что-то лучше, блин.

Комментарии

Аватар пользователя graker graker 7 апреля 2011 в 10:09

OG User Roles стоит, с ним такое не получается. Затык в том, что помимо групповых нод есть еще и не-групповые, общественные. И чтобы их редактировать, получается надо разрешать edit all, а edit all к сожалению распространяется и на приватные.

Последние два посмотрел, не увидел, как ими можно добиться результата.

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 7 апреля 2011 в 13:46

1. отказаться от user/1
ему можно всею более того я в своих модулях иногда это даже предусматриваю.
2. написать доп. модуль который будет перехват той возможности редактирования делать Smile

Аватар пользователя graker graker 7 апреля 2011 в 14:04

Ну user/1-то да, не критично.

2. Уже сделал, да, пока что тупо через проверку в hook_init() на node_access('view', $node) - если нету, то и редактировать нельзя.

Аватар пользователя graker graker 7 апреля 2011 в 15:33

1. По валидированным значениям arg() Smile
2. node_load() все равно кэшируется статически.
3. Я ж говорю - "пока", потом переделаю как надо.

В принципе, я нашел еще OG Access Boost, он немного другое делает, но - почти как надо.