Система доступа к нодам определяет кто и что может сделать с определёнными нодами.
Для определении прав доступа для ноды используется
. Эта функция сперва проверяет, имеет ли пользователь разрешение 'administer nodes'
. Такие пользователи имеют неограниченный доступ ко всем нодам. Затем вызывается хук
в модуле этой ноды (по умолчанию —
), и возвращаемое значение, TRUE
или FALSE
, разрешит или запретит доступ. Например, это позволяет модулю blog всегда предоставлять доступ самому автору блога, а модулю book — всегда запрещать редактирование PHP страниц.
Если «нодовый» модуль не вмешивается в процесс ограничения доступа (возвращает NULL
в
), тогда для этого используется таблица 'node_access'
. Все такие модули опрашиваются при помощи хука
и в результате собирается список идентификаторов разрешений пользователя (grant IDs). Этот список сравнивается с таблицей по соответствию grant ID. Если в таблице присутствует запись с идентифкатором ноды или идентификатор ноды в таблице равен 0, то доступ к ноде (или нодам) разрешается. Отметьте, что эта таблица, по существу, является списком разрешений; любой совпадающий строки достаточно, чтобы разрешить доступ к ноде.
Читать далее »