Список прав пользователя (CAccess::GetUserCodesArray(…)):
1 |
SELECT * FROM b_user_access WHERE USER_ID = ... |
Организация управления доступом в 1С-Битрикс
Коды групп [GROUP_CODE]:
U1 — User (пользователь с ID = 1);
G1 — Group (группа пользователей с ID = 1);
D1 — Department (сотрудники отдела с ID = 1);
DR2 — Department Recursive (сотрудники отдела с ID = 2 и его подотделов);
SG3_A — Sonet Group (админ (владелец) группы соцсети с ID = 3);
SG3_E — Sonet Group (модераторы группы соцсети с ID = 3);
SG3_K — Sonet Group (все члены группы соцсети с ID = 3);
CR — Creator (создатель (автор) элемента);
AU — Authorized Users (все авторизованные пользователи);
IU44 — Пользователь социальной сети (сотрудник и все его вышестоящие руководители)
CRM
A — Свои
D — Свои + своего отдела
F — Свои + своего отдела + подотделов
O — Все открытые
X — Все
1 2 3 4 5 6 7 8 9 10 |
// bitrix/modules/crm/include.php // Permissions --> define('BX_CRM_PERM_NONE', ''); define('BX_CRM_PERM_SELF', 'A'); define('BX_CRM_PERM_DEPARTMENT', 'D'); define('BX_CRM_PERM_SUBDEPARTMENT', 'F'); define('BX_CRM_PERM_OPEN', 'O'); define('BX_CRM_PERM_ALL', 'X'); define('BX_CRM_PERM_CONFIG', 'C'); // <-- Permissions |
1 2 3 4 5 6 7 8 9 |
// bitrix/modules/crm/classes/general/crm_perms.php const PERM_NONE = BX_CRM_PERM_NONE; const PERM_SELF = BX_CRM_PERM_SELF; const PERM_DEPARTMENT = BX_CRM_PERM_DEPARTMENT; const PERM_SUBDEPARTMENT = BX_CRM_PERM_SUBDEPARTMENT; const PERM_OPEN = BX_CRM_PERM_OPEN; const PERM_ALL = BX_CRM_PERM_ALL; const PERM_CONFIG = BX_CRM_PERM_CONFIG; const ATTR_READ_ALL = 'RA'; |
Пример прав на сделку:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT * FROM b_crm_entity_perms WHERE ENTITY_ID = 13355 AND ENTITY = 'DEAL_C2' --------------------------------------------------------- 952440 DEAL_C2 13355 D102 952441 DEAL_C2 13355 IU44 952438 DEAL_C2 13355 O 952439 DEAL_C2 13355 STAGE_IDC2:NEGOTIATING 952437 DEAL_C2 13355 U44 |
DEAL_C2 — сделки с направлением ID=2 (b_crm_category)
D102 — подразделение ID=102
IU44 — сотрудник c ID=44
O — все открытые
STAGE_IDC2:NEGOTIATING — стадия сделки (ID=C2:NEGOTIATING) по направлению ID=2 (SELECT * FROM b_crm_status WHERE ENTITY_ID = 'DEAL_STAGE_2' AND STATUS_ID = 'C2:NEGOTIATING'
)
U44 — пользователь c ID=44
Инфоблоки
CIBlockElementRights расширенные права BItrix
1 2 3 4 5 6 7 |
<? $PERM["/"]["*"]="D"; // запрещает всем группам пользователей доступ ко всем файлам и каталогам $PERM["/"]["AU"]="R"; // разрешает авторизованным группам пользователей доступ ко всем файлам и каталогам $PERM["about"]["*"]="R"; // разрешает всем группам пользователей доступ к каталогу about $PERM["login"]["*"]="R"; // разрешает всем группам пользователей доступ к каталогу login $PERM["index.php"]["*"]="R"; // разрешает всем группам пользователей доступ к файлу index.php ?> |
Компоненты авторизации и регистрации в CMS 1C-Bitrix
Расширенные права на инфоблок:
1 2 3 4 5 6 7 8 9 10 11 |
SELECT * FROM portal1309.b_iblock_right r WHERE r.entity_id = 167; # ID, IBLOCK_ID, GROUP_CODE, ENTITY_TYPE, ENTITY_ID, DO_INHERIT, TASK_ID, OP_SREAD, OP_EREAD, XML_ID 103873 167 G11 iblock 167 Y 39 Y Y 119717 167 CR iblock 167 Y 42 Y Y 123927 167 DR83 iblock 167 Y 40 N N |
Права на элемент
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
SELECT * FROM portal1309.b_iblock_element_right WHERE element_id = 161176; # IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED 167 0 161176 103873 Y 167 0 161176 119717 Y 167 0 161176 123927 Y 167 0 161176 124641 N SELECT * FROM b_iblock_right WHERE id = 124641 # ID, IBLOCK_ID, GROUP_CODE, ENTITY_TYPE, ENTITY_ID, DO_INHERIT, TASK_ID, OP_SREAD, OP_EREAD, XML_ID 124641 167 U6324 element 161176 Y 72 Y Y SELECT * FROM b_task WHERE module_id = 'iblock' AND ID = 72 # ID, NAME, LETTER, MODULE_ID, SYS, DESCRIPTION, BINDING 72 iblock_admin_add T iblock Y iblock |
Права в параметрах шаблона БП не перезаписывают уже установленные для GROUP_CODE. Лучше использовать действие «Установка прав».
Просмотр прав на элемент:
1 2 3 4 5 6 7 8 9 10 |
SELECT e.ELEMENT_ID, i.*, t.* FROM b_iblock_element_right e inner join b_iblock_right i on e.right_id = i.id inner join b_task t on t.id=i.task_id WHERE e.element_id = 161176; |