- Все для CMS | Joomla, Drupal, phpBB, Wordpress, DLE, IPB - http://cmsart.ru -
Система доступа к нодам
Posted By admin On 11.04.2012 @ 2:46 пп In Справочник API | No Comments
Система доступа к нодам определяет кто и что может сделать с определёнными нодами.
Для определении прав доступа для ноды используется (). Эта функция сперва проверяет, имеет ли пользователь разрешение 'administer nodes'. Такие пользователи имеют неограниченный доступ ко всем нодам. Затем вызывается хук () в модуле этой ноды (по умолчанию — ()), и возвращаемое значение, TRUE или FALSE, разрешит или запретит доступ. Например, это позволяет модулю blog всегда предоставлять доступ самому автору блога, а модулю book — всегда запрещать редактирование PHP страниц.
Если «нодовый» модуль не вмешивается в процесс ограничения доступа (возвращает NULL в ()), тогда для этого используется таблица 'node_access'. Все такие модули опрашиваются при помощи хука() и в результате собирается список идентификаторов разрешений пользователя (grant IDs). Этот список сравнивается с таблицей по соответствию grant ID. Если в таблице присутствует запись с идентифкатором ноды или идентификатор ноды в таблице равен 0, то доступ к ноде (или нодам) разрешается. Отметьте, что эта таблица, по существу, является списком разрешений; любой совпадающий строки достаточно, чтобы разрешить доступ к ноде.
В списках нод процесс проверки правил доступа несколько иной. () не вызывается для каждой отдельной ноды по причине низкой производительности такого подхода, а также для нормальной работы пэйджера (листалки страниц). Поэтому, SQL-запрос, формирующий список, следует пропускать через функцию (), которая посредством вызовов хуков () дополнит запрос проверками доступа.
Как писать свои собственные модули доступа — .
| Имя | Описание |
|---|---|
developer/hooks/ |
Определяет ограничения доступа. |
developer/hooks/ |
Устанавливает разрешения для ноды быть записанной в базу данных. |
developer/hooks/ |
Информирует систему управления доступом к нодам о правах, которые пользователь имеет. |
modules/node/ |
Устанавливает, может ли текущий пользователь выполнять заданные действия над определённой нодой. |
modules/node/ |
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. |
modules/node/ |
Fetch an array of permission IDs granted to the given user ID. |
modules/node/ |
Устанавливает/снимает флаг перестройки права доступа ноды или возвращает текущее значение флага. |
modules/node/ |
Rebuild the node access database. This is occasionally needed by modules that make system-wide changes to access levels. |
modules/node/ |
Determine whether the user has a global viewing grant for all nodes. |
modules/node/ |
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… |
modules/node/ |
Реализация (). |
modules/node/ |
Generate an SQL join clause for use in fetching a node listing. |
modules/node/ |
Post-processing for node_access_rebuild_batch. |
modules/node/ |
Batch operation for node_access_rebuild_batch. |
modules/node/ |
Generate an SQL where clause for use in fetching a node listing. |
Источник:
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
Click here to print.
Copyright © 2012 Поддержка CMS | Документация, статьи по Joomla, Drupal, phpBB. All rights reserved.