Расширение возможностей настройки прав доступа к материалам

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

Аватар пользователя sas@drupal.org sas@drupal.org 9 мая 2007 в 12:04

Задача: 1) Ограничить доступ на просмотр (view) для определенных ролей (role) по определенным типам материала (node type).
2) Ограничить доступ на просмотр только собственных материалов (view own) для определенных ролей (role) по определенным типам материала (node type).
Решение:
1) Используется модуль nodeaccess с изменениями (в текст модуля добавлено право на просмотр собственных grant_own_view ). (файл прилагается)
2) Изменена строчка в модуле /modules/node.module (function _node_access_where_sql).
Строка $sql = "$node_access_alias.grant_$op >= 1 $grants_sql";
заменена на $sql = "$node_access_alias.grant_$op >= 1 $grants_sql OR ( $node_access_alias.grant_own_$op >= 1 AND $node_access_alias.uid = $user->uid )";
3) В таблицу базы node_access добавлены поля grant_own_view и uid.

Примечание: Перед сохраенением новых установок (admin/settings/nodeaccess) таблица базы node_access очищена ( TRUNCATE TABLE `node_access` ).
! перед началом работ выполнить backup базы !

ВложениеРазмер
Файл nodeaccess.rar11.53 КБ

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 10 мая 2007 в 10:27

Согласен, но

Приоритеты:
1) Надежность;
2) Эффективность;
2) Скорость работы.

P.S.
1) Измеенения в ноде можно не вносить если удовлетворяет вариант когда через запрос к базе метериал виден на сранице, но доступ на просмотр к нему не возможен;
2) Изменения минимальные и соответсвенно юзабильные, разработчик мог предусматреть такую возможность сам ( есть же own_edit), а own_view видно в философию не вписывается Smile

Аватар пользователя sas@drupal.org sas@drupal.org 10 мая 2007 в 10:30

По поводу "рая" описанного razgonka.ru (когда ничего не меняем в core и живем весело) имею большой практический опыт (коммерческие проекты) что, это не совсем так, а вернее он больше напоминает адамов рай - соблазнителен, но быстро заканчивается Smile

Аватар пользователя lalex lalex 10 мая 2007 в 10:46

у разработчиков есть два варианта:
1) продать и забыть
2) продать, потом еще раз продать, и еще раз продать,.....,.....,.....
Smile

не спорю, сторонние модули, даже просто необходимо иногда править (даже по причине что автор на них забил). но я к примеру не сторонник ковырять ядро системы - просто потому, что есть шанс забыть - не смотря на все ухищрения в виде документирования проекта и и т.п.
хотя сам факт ковыряния, не считаю чем то плохим - иногда это лучший выход.

P.S. имхо вообще то, что вы описали, можно решить написанием модуля