Работа с группами пользователей — это одна из базовых задач при разработке на Bitrix. Группы позволяют организовать управление доступом к различным частям сайта: от простой настройки видимости кнопок до сложной логики работы модулей. Например, вы можете показывать админам кнопку "Редактировать", а обычным пользователям — только просмотр контента. В этой статье мы рассмотрим, как проверить, входит ли пользователь в определенную группу, и приведем примеры для разных сценариев.
Прежде чем приступить к коду, давайте разберем основы. Управление группами пользователей происходит в административной панели Bitrix: в раздел "Настройки > Пользователи > Группы пользователей". На этой странице можно создавать, редактировать и удалять группы, так же на ней можно получить ID группы (GROUP_ID) для дальнейшего использования в коде.
Добавление пользователя в группу происходит в форме редактирования пользователя. Чтобы перейти к редактированию пользователя нужно зайти в раздел "Настройки > Пользователи > Список пользователей" и выбрать нужно пользователя.
Проверка групп текущего пользователя
Метод GetUserGroupArray()
возвращает массив ID всех групп, к которым принадлежит текущий пользователь. Мы можем использовать его для проверки принадлежности к конкретной группе.
global $USER;
$userGroups = $USER->GetUserGroupArray();
if (in_array(5, $userGroups)) {
echo "Пользователь входит в группу.";
} else {
echo "Пользователь НЕ входит в группу.";
}
Пример кода проверки группы в Bitrix
В этом примере мы с начала получаем массив содержащий ID всех групп текущего пользователя и далее проверяем есть ли среди них, нужная нам группа.
Проверка групп определенного пользователя
Парой возникает необходимость проверить принадлежит ли конкретный пользователь (не текущий пользователь) к той или иной группе. Для решений этой задачи можно использовать метод GetUserGroup
. Давайте рассмотрим как его использовать:
$userId = 12;
$userGroups = \CUser::GetUserGroup($userId);
if (in_array(5, $userGroups)) {
echo "Пользователь входит в группу.";
} else {
echo "Пользователь НЕ входит в группу.";
}
Ключевое отличие, что мы сами указываем ID пользователя для которого получаем массив групп. Этот вариант больше подходит для каких-то бэкенд скриптов, когда например нужно отправить письма всем пользователям которые входят в группу "Менеджеры".
Проверка нескольких групп
Если нужно проверить, входит ли пользователь хотя бы в одну из нескольких групп, используйте функцию array_intersect()
:
global $USER;
$requiredGroups = [5, 7, 9]; // ID групп
$userGroups = $USER->GetUserGroupArray();
if (count(array_intersect($requiredGroups, $userGroups)) > 0) {
echo "Пользователь входит в одну из указанных групп.";
}
Работа с неавторизованными пользователями
Не забывайте о гостях! Если пользователь не авторизован, метод $USER->GetUserGroupArray()
всё равно вернет массив групп, включая группу "Гости" (обычно её ID = 2). Убедитесь, что вы учли этот случай:
global $USER;
$userGroups = $USER->GetUserGroupArray();
if (in_array(2, $userGroups)) {
echo "Это гость.";
}
Стоит иметь в виду эту особенность работы системы при разработке.
Для проверки авторизации пользователя рекомендуется использовать метод IsAuthorized()
. Мы уже рассказывали о том, как работать с этим методом, в предыдущей статье.
Как проверить группу пользователя в Bitrix 24
Код, представленный выше, будет работать как в Битрикс24, так и в Битрикс Управление сайтом. В обеих редакциях системы используется один и тот же основной модуль, в котором содержится функционал для работы с пользователями.
Заключение
Проверка принадлежности пользователя к группе — это важная задача в разработке на Bitrix. Мы разобрали несколько практических примеров. Теперь вы знаете, как настроить доступ к компонентам, страницам и модулям в зависимости от группы пользователя.