Главная » API Битрикс » CUser » IsAuthorized, GetID, IsAdmin — проверки CUser в Битрикс

IsAuthorized, GetID, IsAdmin — проверки CUser в Битрикс

Порядок проверок пользователя в Битрикс: сначала IsAuthorized, затем GetID и IsAdmin

IsAuthorized, GetID и IsAdmin — три метода класса CUser, которые чаще всего вызываются вместе для одной цели: понять, кто перед нами, и что ему разрешено. Разберём каждый и типичные ошибки в порядке их вызова.

IsAuthorized: авторизован ли посетитель

<?php

global $USER;

if ($USER->IsAuthorized()) {
    // посетитель вошёл под своим аккаунтом
} else {
    // гость
}

Это первая проверка почти в любом сценарии, зависящем от авторизации. Важно: метод не проверяет права доступа — только сам факт входа в систему. Авторизованный пользователь может быть кем угодно, от администратора до только что зарегистрировавшегося покупателя.

GetID: идентификатор текущего пользователя

<?php

global $USER;

$userId = $USER->GetID();

Для неавторизованного посетителя метод вернёт 0 — это не идентификатор ошибки, а зарезервированное значение для гостя. Использовать GetID() без предварительной проверки IsAuthorized() — источник тонких багов: код может выполнить действие «от лица пользователя с ID 0», если проверку забыли.

<?php

global $USER;

if (!$USER->IsAuthorized()) {
    return; // не продолжаем без авторизации
}

$userId = $USER->GetID();

Нужна помощь с Битрикс?





    IsAdmin: относится ли пользователь к администраторам

    <?php
    
    global $USER;
    
    if ($USER->IsAdmin()) {
        // доступны расширенные возможности
    }

    Метод проверяет, состоит ли пользователь в группе с флагом «Административная» — обычно это группа полного доступа, заданная при установке системы. Для более гибкой проверки прав, не сводящейся к бинарному «администратор или нет», используется полноценная система прав доступа с проверкой конкретных разрешений группы.

    Типичная последовательность проверок

    <?php
    
    global $USER;
    
    if (!$USER->IsAuthorized()) {
        LocalRedirect('/auth/?backurl=' . urlencode($APPLICATION->GetCurPageParam()));
    }
    
    if ($USER->IsAdmin()) {
        // показать панель управления
    } else {
        // показать обычный интерфейс для этого пользователя
        $userId = $USER->GetID();
    }

    Проверка группы, отличной от администраторов

    Если нужно проверить принадлежность не к группе администраторов, а к произвольной другой — например, группе «Оптовики», — IsAdmin() не подойдёт, нужна проверка списка групп пользователя напрямую:

    <?php
    
    global $USER;
    
    $groups = $USER->GetUserGroupArray();
    
    if (in_array(7, $groups)) {
        // пользователь состоит в группе с ID 7
    }

    Частые ошибки

    • GetID() вызывается без проверки авторизации. Для гостя возвращается 0, и код может выполнить действие с этим значением как с настоящим ID.
    • IsAdmin() используется как единственная проверка прав. Для более тонкой логики нужна проверка конкретных групп или полноценных прав доступа.
    • Проверки выполняются в неверном порядке. Обращение к данным пользователя до проверки IsAuthorized() может привести к работе с пустыми или нулевыми значениями.

    Итог

    Три метода решают три разных вопроса: IsAuthorized() — вошёл ли пользователь вообще, GetID() — какой у него идентификатор (с оговоркой про 0 для гостя), IsAdmin() — состоит ли он в административной группе. Правильный порядок — сначала проверить факт авторизации, и только затем обращаться к идентификатору и правам, иначе легко получить логику, работающую для несуществующего пользователя с ID 0.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    База знаний