Перейти к содержанию

Пользователи

Пользователь — это учетная запись с логином, паролем и определенными правами доступа.

Список всех пользователей находится в административном разделе на странице Настройки > Пользователи > Список пользователей. Адрес страницы — /bitrix/admin/user_admin.php.

Самостоятельная регистрация пользователей

В системе можно разрешить самостоятельную регистрацию пользователей.

  1. Откройте настройки Главного модуля — Настройки > Настройки продукта > Настройки модулей Главный модуль.

  2. На вкладке Авторизация установите флаг Позволять ли пользователям регистрироваться самостоятельно.

При регистрации пользователь получит логин и пароль. Система автоматически добавит пользователя в группу, которая указана в параметре При регистрации добавлять в группу. Позже администратор может изменить список групп для пользователя вручную.

Как добавить или изменить пользователя

  1. Откройте страницу Настройки > Пользователи > Список пользователей.

  2. Выберите действие:

  3. создать нового пользователя — нажмите Добавить пользователя,

  4. изменить существующего — найдите пользователя и нажмите Изменить или дважды кликните по строке.

  1. Заполните форму редактирования.

Вкладки формы редактирования

Каждая вкладка отвечает за определенный блок настроек учетной записи.

Пользователь. Настройка общих параметров пользователя: имени, логина, пароля, адреса электронной почты. Обязательные поля: Логин, Новый пароль, Подтверждение нового пароля.

Номер телефона и email можно сделать обязательными для регистрации, если в настройках Главного модуля отметить опции Номер телефона является обязательным и Email является обязательным полем.

Группы. Выбор групп для привязки. Отметьте группы и укажите период времени, на который осуществляется привязка.

Совет

Подробнее о группах читайте в статье Группы пользователей.

Безопасность. Информация по настройкам безопасности для пользователя.

Внимание

Если пользователь входит в несколько групп, для каждого параметра безопасности применяется самое строгое значение из всех его групп.

Личные данные. Дополнительная информация о пользователе.

Работа. Данные о компании, должности, контактах.

Рейтинг. Установка начального значения рейтинга.

Блог. Настройки профиля пользователя в блогах: псевдоним, интересы, аватар.

Форум. Параметры профиля пользователя для форума: подпись, аватар.

Обучение. Настройка отображения профиля в модуле Обучение.

Двухэтапная авторизация. Подключение мобильного приложения или брелка одноразовых паролей, если в системе включен механизм двухэтапной авторизации.

Совет

Подробнее читайте в статье Двухэтапная авторизация.

Заметки. Поле для комментария.

Доп. поля. Пользовательские поля для объекта USER. Новое поле можно создать по ссылке Добавить пользовательское поле.

Совет

Подробнее читайте в статье Пользовательские поля.

Как настроить права доступа

Права доступа к разделам и инструментам сайта настраиваются на уровне группы. Пользователь может состоять в нескольких группах. Если права различаются, пользователь получает наиболее высокий уровень прав.

Пример. Пользователь состоит в группах Сотрудники и Маркетинг.

  • Сотрудники — разрешен просмотр портала, кроме раздела Документы.

  • Маркетинг — полный доступ к разделу Документы.

В результате пользователь имеет доступ к порталу и к разделу Документы.

Совет

Подробнее читайте в статье Права доступа.

API пользователей

Для работы с пользователями используйте классы:

  • \Bitrix\Main\UserTable --для выборки данных,

  • CUser — для базовых операций: создать, изменить или удалить пользователя,

  • \Bitrix\Main\Engine\CurrentUser — для доступа к данным текущего пользователя из действий контроллера.

Когда работаете с классом CUser, при запуске страницы автоматически создается объект $USER. Он содержит данные о текущем пользователе.

global $USER;

/**
 * @var \CUser $USER
 */

$userId = $USER->GetID();

Добавить нового пользователя

$user = new CUser();
$id = $user->Add([
    "NAME" => "Иван",
    "LAST_NAME" => "Петров",
    "EMAIL" => "ipetrov@example.ru",
    "LOGIN" => "ipetrov",
    "LID" => "s1",
    "ACTIVE" => "Y",
    "GROUP_ID" => [2, 3],
    "PASSWORD" => "strong_password_123",
    "CONFIRM_PASSWORD" => "strong_password_123",
]);

if ($id > 0)
{
    echo "Пользователь добавлен, ID: " . $id;
}
else
{
    echo "Ошибка: " . $user->LAST_ERROR;
}

Изменить данные пользователя

$user = new CUser();
$user->Update($ID, [
    "EMAIL" => "ivan.petrov@example.ru",
    "GROUP_ID" => [2, 3, 5],
]);

if ($user->LAST_ERROR)
{
    echo "Ошибка: " . $user->LAST_ERROR;
}

Выполнить авторизацию пользователя

global $USER;

/**
 * @var \CUser $USER
 */

$authResult = $USER->Login($login, $password, "Y");
if ($authResult === true)
{
    // Пользователь успешно авторизовался
    LocalRedirect("/personal/");
}
else
{
    // Вывести ошибку
    ShowMessage($authResult['MESSAGE']);
}

Код выполняет проверку пароля и возможность входа.

global $USER;

/**
 * @var \CUser $USER
 */

$USER->Authorize($userId);

Код выполняет авторизацию под пользователем с идентификатором $userId.

Проверить авторизацию

// пример с контроллером
class Example extends Controller
{
    public function saveAction(CurrentUser $user)
    {
        $isAuthorized = $user->getId() > 0;
    }
}
global $USER;

/**
 * @var \CUser $USER
 */

if ($USER->IsAuthorized())
{
    echo "Пользователь авторизован";
}
else
{
    echo "Пользователь не авторизован";
}

Получить данные текущего пользователя

class Example extends Controller
{
    #[Authentication]
    public function saveAction(CurrentUser $user)
    {
        $login = $user->getLogin();
        $name  = $user->getName();

        // ...
    }
}

Выбрать пользователей по фильтру

Код выводит всех пользователей с именем Иван и фамилией Петров.

use Bitrix\Main\UserTable;

$users = UserTable::query()
    ->setSelect(['ID', 'NAME', 'LAST_NAME', 'EMAIL'])
    ->where('ACTIVE')
    ->where('NAME', 'Иван')
    ->whereLike('LAST_NAME', 'Петров%')
    ->setOrder(['LAST_LOGIN' => 'DESC'])
    ->fetchCollection()
;
/**
 * @var \Bitrix\Main\EO_User $user
 */
foreach ($users as $user)
{
    $user->getName();
    $user->getEmail();
}

Выбрать пользователей группы по фильтру

Код выводит список активных пользователей администраторов (группу с ID=1).

$users = \Bitrix\Main\UserTable::query()
    ->setSelect(['ID', 'NAME', 'EMAIL'])
    ->setFilter([
        'GROUPS.GROUP_ID' => 1,
        '=ACTIVE' => 'Y',
    ])
    ->fetchCollection()
;

/**
 * @var \Bitrix\Main\EO_User $user
 */
foreach ($users as $user)
{
    # code...
}

Выбрать группы пользователя

$users = \Bitrix\Main\UserTable::query()
    ->setSelect(['ID', 'GROUPS.GROUP'])
    ->setLimit(1)
    ->fetchCollection()
;

/**
 * @var \Bitrix\Main\EO_User $user
 */
foreach ($users as $user)
{
    foreach ($user->getGroups() as $userGroup)
    {
        $activeTo = $userGroup->getDateActiveTo();
        $activeFrom = $userGroup->getDateActiveFrom();

        $group = $userGroup->getGroup();
        $groupName = $group->getName();

        # code...
    }
}

Состоит ли пользователь в группе

В примере проверяется, состоит ли текущий пользователь в группе с ID=3.

global $USER;

/**
 * @var \CUser $USER
 */

$groupId = 1;
if (in_array($groupId, $USER->GetUserGroupArray()))
{
    # code...
}

Удалить пользователя

/**
 * @var \CMain $APPLICATION
 */

$isDeleted = CUser::Delete($userId);
if (!$isDeleted)
{
    $error = (string)$APPLICATION->GetException();
    if (empty($error))
    {
        $error = "Пользователь не найден";
    }
}