Ограничение доступа к ноде.

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

Аватар пользователя AleksSem AleksSem 6 августа 2009 в 13:50

Доброго времени суток всем.
Помогите пожалуйста разобраться.
Необходимо реализовать достаточно не хитрую систему доступа к ноде.
Не зарегистрированные пользователи могут только создавать ноду. Редактировать может только определенная группа, но каждый пользователь из этой группы имеет возможность в меню редактирования ноды привязать ее к себе. После чего редактировать ее может только он ну и администратор.

На данный момент я выставил только стандартные привилегии в связке с Content Permissions CCK. Создавать ноду могут все даже анонимы, в ноде через CCK стоит referens на пользователя который видят все кроме анонима. редактировать ноду могут только зарегистрированные и администраторы. зарегистрированные и администраторы могут привязать к ноде пользователя по refence.

Проблема в том как запретить пользователям группы зарегистрированные редактировать ноду если к ней через reference прикреплен пользователь этой группы. Права редактирования ноды должны быть только у него и админа.

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

Подскажите в какую сторону капать? Как в друпале распределяются права доступа? Быть может ест модуль который мне поможет?

Комментарии

Аватар пользователя AleksSem AleksSem 9 августа 2009 в 19:18

ммм не совсем. нужно както ограничить доступ к редактированию ноды в зависимости от поля CCk ,а именно по User reference. Если User reference нет то все как по стандартным правилам, а если есть тогда может редактировать только тот кто выбран в User reference ну или группа administrators.

Аватар пользователя m0ro m0ro 11 августа 2009 в 1:47

Ключевой кусок:

foreach ($node->field_allowed_authors as $author) {
  if ($user->uid == $author['uid']) {
    $is_allowed = TRUE;
    break;
  }
}

Под 6 он работает, я лично это же решение использовал для сходной задачи.
И вот это почитай.