Блог разработчика 1С-Битрикс

Руководство по использованию класса CurrentUser в 1С-Битрикс D7

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

CurrentUser, пользователь, методы, интеграция, контроллеры

В этой статье мы подробно рассмотрим, как использовать класс 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С-Битрикс.

Теги: CurrentUser, пользователь, методы, интеграция, контроллеры


Валерий Макеев
05.09.2025 12:11
Этот код выводит приветствие с полным именем и ID текущего авторизованного пользователя, либо сообщает, что пользователь не вошёл в систему.
Код
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Main\Engine\CurrentUser;

$currentUser = CurrentUser::get();

if ($currentUser->getId()) {
    echo "Привет, " . htmlspecialchars($currentUser->getFullName()) . "! Ваш ID: " . $currentUser->getId();
} else {
    echo "Пользователь не авторизован.";
}

require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php");
Валерий Макеев
10.09.2025 18:15
Выводим информацию о текущем пользователе (ID, логин и email) в удобном формате:

Код
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';

$currentUser = \Bitrix\Main\Engine\CurrentUser::get();
if ($currentUser->getId()) {
    echo sprintf(
        "ID: %d\nЛогин: %s\nEmail: %s",
        $currentUser->getId(),
        $currentUser->getLogin(),
        $currentUser->getEmail()
    );
} else {
    echo "Пользователь не авторизован";
}

require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php';

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная