Файл .access.php
В Битрикс есть два уровня разграничения прав доступа:
- доступ на файлы и каталоги
- права в рамках логики модуля
Доступ на файлы и каталоги
Этот уровень прав проверяется в прологе, задается с помощью специального файла .access.php, содержащего массив следующего формата:
$PERM["файл/каталог"]["группа-пользователей"] = "право-доступа";
файл/каталог
имя файла или каталога, для которых назначаются права доступагруппа-пользователей
идентификатор группы пользователей, на которую распространяется данное право (допустимо использование символа*
, что означает — для всех групп)право-доступа
— поддерживаются следующие значения (в порядке возрастания):
D
запрещён (при обращении к файлу доступ будет всегда запрещён)
R
чтение (при обращении к файлу доступ будет разрешен)
U
документооборот (файл может быть отредактирован в режиме документооборота)
W
запись (файл может быть отредактирован непосредственно)
X
полный доступ (подразумевает право на запись и модификацию прав доступа)
Если пользователь принадлежит нескольким группам, то берется максимальное право из всех прав доступа заданных для этих групп. Если для текущего файла или каталога явно не задан уровень прав, то берется уровень прав заданный для вышележащих каталогов.
При попытке открытия страницы /dir/index.php
пользователь, принадлежащий группе ID=3
, будет иметь право доступа D
(запрещено), пользователь из группы ID=2
будет иметь право R
(чтение). Пользователь, принадлежащий обеим группам, будет иметь максимальный уровень доступа — R
(чтение):
<?php
/*
* Файл /dir/.access.php
*/
$PERM["index.php"]["2"] = "R";
$PERM["index.php"]["3"] = "D";
?>
При доступе к странице /admin/index.php
пользователь, принадлежащий группе ID=3
, будет иметь доступ, а пользователю, принадлежащему группе ID=2
, будет в доступе отказано. При доступе к странице /index.php
все посетители будут иметь доступ:
<?php
/*
* Файл Файл /admin/.access.php
*/
$PERM["index.php"]["3"] = "R";
?>
Права в рамках логики модуля
Если речь идет об обычных статичных публичных страницах, то к ним применяется только первый уровень доступа на файлы и каталоги.
Если пользователь имеет на файл как минимум право R
(чтение) и если данный файл является функциональной частью того или иного модуля, то проверяется 2-ой уровень прав, задаваемый в настройках соответствующего модуля.
Например: При заходе на страницу Список обращений в техподдержке администратор видит все обращения, сотрудник техподдержки - только те за которые он ответственнен, а обычный пользователь - только свои обращения. Так работает право доступа в рамках логики модуля Техподдержка.
Используются две методологии разграничения прав доступа 2-го уровня (уровень прав в рамках логики модуля):
- права
- роли
Отличие их заключается в том, что если пользователь обладает несколькими правами, то выбирается максимальное. Если же пользователь обладает несколькими ролями, то он соответственно будет обладать суммарными возможностями этих ролей.
Модули, в которых поддерживаются роли, можно увидеть в фильтре Модуль
на странице Настройки -> Пользователи -> Уровни доступа
в Административном разделе. Во всех остальных модулях и во всех остальных настройках системы используются права. Пример:
Права
если вы принадлежите группам для которых в модуле Статистика заданы права Полный административный доступ и например, Просмотр статистики без финансовых показателей, то вы будете обладать максимальным правом - Полный административный доступ.
Роли
если вы принадлежите к группам для которых в модуле Техподдержка заданы роли Клиент техподдержки и Демо-доступ, то вы одновременно будете обладать возможностями этих двух ролей. Т.е. вы сможете видеть все обращения в режиме демо-доступа и одновременно с этим можете создавать свои обращения как клиент техподдержки.