- Все для CMS | Joomla, Drupal, phpBB, Wordpress, DLE, IPB - http://cmsart.ru -

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

Posted By admin On 11.04.2012 @ 2:46 пп In Справочник API | No Comments

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

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

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

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

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

Функции

Имя Описание
hook_access [2]
developer/hooks/node.php [8]
Определяет ограничения доступа.
hook_node_access_records [9]
developer/hooks/core.php [10]
Устанавливает разрешения для ноды быть записанной в базу данных.
hook_node_grants [4]
developer/hooks/core.php [10]
Информирует систему управления доступом к нодам о правах, которые пользователь имеет.
node_access [1]
modules/node/node.module [11]
Устанавливает, может ли текущий пользователь выполнять заданные действия над определённой нодой.
node_access_acquire_grants [12]
modules/node/node.module [11]
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 [13]
modules/node/node.module [11]
Fetch an array of permission IDs granted to the given user ID.
node_access_needs_rebuild [14]
modules/node/node.module [11]
Устанавливает/снимает флаг перестройки права доступа ноды или возвращает текущее значение флага.
node_access_rebuild [15]
modules/node/node.module [11]
Rebuild the node access database. This is occasionally needed by modules that make system-wide changes to access levels.
node_access_view_all_nodes [16]
modules/node/node.module [11]
Determine whether the user has a global viewing grant for all nodes.
node_access_write_grants [17]
modules/node/node.module [11]
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 [18]
modules/node/node.module [11]
Реализация hook_db_rewrite_sql [6]().
_node_access_join_sql [19]
modules/node/node.module [11]
Generate an SQL join clause for use in fetching a node listing.
_node_access_rebuild_batch_finished [20]
modules/node/node.module [11]
Post-processing for node_access_rebuild_batch.
_node_access_rebuild_batch_operation [21]
modules/node/node.module [11]
Batch operation for node_access_rebuild_batch.
_node_access_where_sql [22]
modules/node/node.module [11]
Generate an SQL where clause for use in fetching a node listing.

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


Article printed from Все для CMS | Joomla, Drupal, phpBB, Wordpress, DLE, IPB: http://cmsart.ru

URL to article: http://cmsart.ru/drupal/drupal-docs/drupal-api/sistema-dostupa-k-nodam

URLs in this post:

[1] node_access: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access/6

[2] hook_access: http://cmsart.ru/goto/http://api.drupal.ru/api/function/hook_access/6

[3] node_content_access: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_content_access/6

[4] hook_node_grants: http://cmsart.ru/goto/http://api.drupal.ru/api/function/hook_node_grants/6

[5] db_rewrite_sql: http://cmsart.ru/goto/http://api.drupal.ru/api/function/db_rewrite_sql/6

[6] hook_db_rewrite_sql: http://cmsart.ru/goto/http://api.drupal.ru/api/function/hook_db_rewrite_sql/6

[7] node_access_example.module: http://cmsart.ru/goto/http://api.drupal.ru/api/file/developer/examples/node_access_example.module/6

[8] node.php: http://cmsart.ru/goto/http://api.drupal.ru/api/file/developer/hooks/node.php/6

[9] hook_node_access_records: http://cmsart.ru/goto/http://api.drupal.ru/api/function/hook_node_access_records/6

[10] core.php: http://cmsart.ru/goto/http://api.drupal.ru/api/file/developer/hooks/core.php/6

[11] node.module: http://cmsart.ru/goto/http://api.drupal.ru/api/file/modules/node/node.module/6

[12] node_access_acquire_grants: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_acquire_grants/6

[13] node_access_grants: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_grants/6

[14] node_access_needs_rebuild: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_needs_rebuild/6

[15] node_access_rebuild: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_rebuild/6

[16] node_access_view_all_nodes: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_view_all_nodes/6

[17] node_access_write_grants: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_access_write_grants/6

[18] node_db_rewrite_sql: http://cmsart.ru/goto/http://api.drupal.ru/api/function/node_db_rewrite_sql/6

[19] _node_access_join_sql: http://cmsart.ru/goto/http://api.drupal.ru/api/function/_node_access_join_sql/6

[20] _node_access_rebuild_batch_finished: http://cmsart.ru/goto/http://api.drupal.ru/api/function/_node_access_rebuild_batch_finished/6

[21] _node_access_rebuild_batch_operation: http://cmsart.ru/goto/http://api.drupal.ru/api/function/_node_access_rebuild_batch_operation/6

[22] _node_access_where_sql: http://cmsart.ru/goto/http://api.drupal.ru/api/function/_node_access_where_sql/6

[23] drupal.ru: http://cmsart.ru/goto/http://drupal.ru

Copyright © 2012 Поддержка CMS | Документация, статьи по Joomla, Drupal, phpBB. All rights reserved.