Правильный .access.php





Ох, сколько мук приносит перенос битрикс-проекта с одной площадки на другою, когда в их базах данных отличаются идентификаторы записей. Ведь «Битрикс» любит идентификаторы, и его создатели, похоже, не задумывались о том, как это будет мигрироваться от разработчика к разработчику, от дева к тесту, от теста в бой. Тут и там встречаются идентификаторы записей из таблиц БД в коде приложения…

С идентификаторами инфоблоков и групп пользователей мы уже разобрались, с помощью Bex\Tools можно и нужно работать с этими данными через символьные коды. Но на этом проблемы не заканчиваются, ведь в «Битриксе» есть файлы .access.php!

В .access.php автоматически (можно и вручную) записываются соответствия идентификаторов групп пользователей и уровней доступа, выданных им на тот или иной файл.



Такой подход меня не устроил и я сделал библиотеку Niceaccess, которая при автоматическом обновлении файла .access.php вместо идентификаторов групп пользователей подставляет вызов методов API Bex\Tools (эта библиотека подключится как зависимость Niceaccss):
<?php
$PERM["admin"][\Bex\Tools\Group\GroupTools::find('CONTROL_PANEL_USERS', true)->id()]="R";
$PERM["admin"]["*"]="D";
?>
Теперь этот .access.php будет работать на любой площадке, независимо от того, какой идентификатор имеет группа пользователей с символьным кодом CONTROL_PANEL_USERS. Запросы методов получения идентификаторов групп кешируются.

❄ ❄ ❄

Подключить библиотеку Niceaccess проще простого:

composer require bitrix-expert/niceaccess

После установки библиотеки нельзя будет создавать группы пользователей без символьных кодов. И все свежесозданные и вновь изменённые .access.php будут «мигрируемыми».

Комментарии

comments powered by HyperComments