- Все для 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.