Главная » Drupal » Документация Drupal » Справочник API » Система доступа к нодам
Распечатать статью

Система доступа к нодам

Система доступа к нодам определяет кто и что может сделать с определёнными нодами.

Для определении прав доступа для ноды используется node_access(). Эта функция сперва проверяет, имеет ли пользователь разрешение 'administer nodes'. Такие пользователи имеют неограниченный доступ ко всем нодам. Затем вызывается хук hook_access() в модуле этой ноды (по умолчанию — node_content_access()), и возвращаемое значение, TRUE или FALSE, разрешит или запретит доступ. Например, это позволяет модулю blog всегда предоставлять доступ самому автору блога, а модулю book — всегда запрещать редактирование PHP страниц.

Если «нодовый» модуль не вмешивается в процесс ограничения доступа (возвращает NULL в hook_access()), тогда для этого используется таблица 'node_access'. Все такие модули опрашиваются при помощи хукаhook_node_grants() и в результате собирается список идентификаторов разрешений пользователя (grant IDs). Этот список сравнивается с таблицей по соответствию grant ID. Если в таблице присутствует запись с идентифкатором ноды или идентификатор ноды в таблице равен 0, то доступ к ноде (или нодам) разрешается. Отметьте, что эта таблица, по существу, является списком разрешений; любой совпадающий строки достаточно, чтобы разрешить доступ к ноде.

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

Как писать свои собственные модули доступа — node_access_example.module.

Функции

Имя Описание
hook_access
developer/hooks/node.php
Определяет ограничения доступа.
hook_node_access_records
developer/hooks/core.php
Устанавливает разрешения для ноды быть записанной в базу данных.
hook_node_grants
developer/hooks/core.php
Информирует систему управления доступом к нодам о правах, которые пользователь имеет.
node_access
modules/node/node.module
Устанавливает, может ли текущий пользователь выполнять заданные действия над определённой нодой.
node_access_acquire_grants
modules/node/node.module
This function will call module invoke to get a list of grants and then write them to the database. It is called at node save, and should be called by modules whenever something other than a node_save causes the permissions on a node to change.
node_access_grants
modules/node/node.module
Fetch an array of permission IDs granted to the given user ID.
node_access_needs_rebuild
modules/node/node.module
Устанавливает/снимает флаг перестройки права доступа ноды или возвращает текущее значение флага.
node_access_rebuild
modules/node/node.module
Rebuild the node access database. This is occasionally needed by modules that make system-wide changes to access levels.
node_access_view_all_nodes
modules/node/node.module
Determine whether the user has a global viewing grant for all nodes.
node_access_write_grants
modules/node/node.module
This function will write a list of grants to the database, deleting any pre-existing grants. If a realm is provided, it will only delete grants from that realm, but it will always delete a grant from the ‘all’ realm. Modules which utilize…
node_db_rewrite_sql
modules/node/node.module
Реализация hook_db_rewrite_sql().
_node_access_join_sql
modules/node/node.module
Generate an SQL join clause for use in fetching a node listing.
_node_access_rebuild_batch_finished
modules/node/node.module
Post-processing for node_access_rebuild_batch.
_node_access_rebuild_batch_operation
modules/node/node.module
Batch operation for node_access_rebuild_batch.
_node_access_where_sql
modules/node/node.module
Generate an SQL where clause for use in fetching a node listing.

Источник: drupal.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи