В 1С-Битрикс для работы с текущим пользователем предусмотрен класс \Bitrix\Main\Engine\CurrentUser
, который упрощает получение данных о текущем пользователе системы. Он представляет собой удобный интерфейс для работы с пользователем в контексте обработки запросов и взаимодействия с API.

В этой статье мы подробно рассмотрим, как использовать класс CurrentUser
, его методы и возможности интеграции с различными компонентами и сервисами 1С-Битрикс. Рассмотрим примеры использования как в контроллерах, так и в других частях системы.
Что такое CurrentUser?
Класс CurrentUser
инкапсулирует информацию о текущем пользователе в системе. Он предоставляет методы для получения данных пользователя, таких как ID, логин, email, фамилия, имя и другие. Этот класс служит для того, чтобы работать с пользователем без необходимости взаимодействовать напрямую с глобальной переменной $USER
.
Основные методы класса
Рассмотрим ключевые методы, которые предоставляет класс CurrentUser
.
1. Метод get()
Метод get()
возвращает текущего пользователя, используя глобальную переменную $USER
.
public static function get()
{
global $USER;
$self = new static();
$self->cuser = $USER;
return $self;
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
echo $currentUser->getId(); // Выведет ID текущего пользователя
2. Метод getId()
Метод getId()
возвращает ID текущего пользователя.
public function getId()
{
return $this->cuser->getId();
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
$userId = $currentUser->getId(); // Получаем ID пользователя
echo $userId;
3. Метод getLogin()
Метод getLogin()
возвращает логин текущего пользователя.
public function getLogin()
{
return $this->cuser->getLogin();
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
echo $currentUser->getLogin(); // Выведет логин текущего пользователя
4. Метод getEmail()
Метод getEmail()
возвращает email текущего пользователя.
public function getEmail()
{
return $this->cuser->getEmail();
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
echo $currentUser->getEmail(); // Выведет email текущего пользователя
5. Метод getFullName()
Метод getFullName()
возвращает полное имя пользователя.
public function getFullName()
{
return $this->cuser->getFullName();
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
echo $currentUser->getFullName(); // Выведет полное имя пользователя
6. Метод getUserGroups()
Метод getUserGroups()
возвращает массив групп, к которым принадлежит пользователь.
public function getUserGroups()
{
return $this->cuser->getUserGroupArray();
}
Пример использования:
$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
$userGroups = $currentUser->getUserGroups();
print_r($userGroups); // Выведет массив групп пользователя
Интеграция с методами контроллеров
Одним из самых удобных способов использования класса CurrentUser
является интеграция его с действиями контроллеров.
Пример использования в методах контроллера
Предположим, у нас есть контроллер с действием, которое требует информацию о текущем пользователе.
use Bitrix\Main\Engine\Controller;
use Bitrix\Main\Engine\CurrentUser;
use Bitrix\Main\Error;
class MyController extends Controller
{
public function getAction(Folder $folder)
{
// Получаем текущего пользователя
$currentUser = $this->getCurrentUser();
// Получаем контекст безопасности для текущего пользователя
$securityContext = $folder->getStorage()->getSecurityContext($currentUser->getId());
// Проверяем, имеет ли пользователь доступ к чтению
if (!$folder->canRead($securityContext)) {
$this->addError(new Error('Не удалось прочитать папку.'));
return null;
}
return $folder->toArray();
}
}
В этом примере метод контроллера getAction
использует метод getCurrentUser()
, чтобы получить текущего пользователя и выполнить проверку доступа.
Интеграция с помощью зависимостей через параметры метода ajax-действия
Другим способом получения пользователя является использование зависимости в методах, которые обрабатывают AJAX-запросы.
public function getAction(Folder $folder, CurrentUser $currentUser)
{
// Получаем контекст безопасности для текущего пользователя
$securityContext = $folder->getStorage()->getSecurityContext($currentUser->getId());
// Проверяем, имеет ли пользователь доступ к чтению
if (!$folder->canRead($securityContext)) {
$this->addError(new Error('Не удалось прочитать папку.'));
return null;
}
return $folder->toArray();
}
В этом случае зависимость CurrentUser
передается через параметры метода, что позволяет получить текущего пользователя без необходимости вручную извлекать его в коде.
Заключение
Класс \Bitrix\Main\Engine\CurrentUser
предоставляет мощный и удобный интерфейс для работы с текущим пользователем в 1С-Битрикс. Он значительно упрощает процесс получения данных о пользователе, позволяет интегрировать информацию о пользователе в контроллеры и действия с минимальными усилиями.
Использование этого класса помогает создавать более удобные и безопасные решения для работы с правами доступа, а также позволяет легко получать и использовать информацию о текущем пользователе во всех частях системы 1С-Битрикс.