В системе 1С-Битрикс, как и в большинстве современных веб-систем, важно управлять доступом к различным разделам сайта, а также персонализировать контент в зависимости от статуса авторизации пользователя. Для этого в Битрикс существует метод `IsAuthorized`, который позволяет проверить, авторизован ли текущий пользователь. В этой статье мы подробно рассмотрим, как использовать этот метод и приведем примеры его применения в реальных проектах.

Что такое CUser::IsAuthorized
?
Метод IsAuthorized
является не статическим методом класса CUser
и используется для проверки, вошел ли пользователь в систему. Если пользователь авторизован, метод возвращает true
; если нет — false
. С версии 20.5.46 метод используется следующим образом:
global $USER;
$USER->IsAuthorized();
Пример использования метода IsAuthorized
1. Проверка авторизации перед отображением контента
Этот пример демонстрирует, как можно использовать метод IsAuthorized
для персонализации контента на сайте в зависимости от того, авторизован ли пользователь.
if ($USER->IsAuthorized()) {
echo "Добро пожаловать, " . $USER->GetFullName();
} else {
echo "Пожалуйста, войдите в систему.";
}
2. Условное выполнение кода
Предположим, что на сайте есть страница личного кабинета, и доступ к ней должен быть только у авторизованных пользователей. С помощью метода IsAuthorized
можно легко реализовать это условие.
if ($USER->IsAuthorized()) {
// Код, который выполняется только для авторизованных пользователей
// Например, доступ к личному кабинету
include 'profile.php';
} else {
echo "Доступ ограничен. Пожалуйста, войдите в систему.";
}
3. Ограничение доступа к определенной странице
Еще один частый случай — это редирект неавторизованных пользователей на страницу входа. Для этого достаточно проверить авторизацию и выполнить редирект в случае неуспешной проверки.
if (!$USER->IsAuthorized()) {
header("Location: login.php");
exit();
}
4. Отображение разных меню для авторизованных и неавторизованных пользователей
С помощью метода IsAuthorized
можно изменять содержимое меню в зависимости от того, авторизован ли пользователь.
if ($USER->IsAuthorized()) {
echo "Выход";
} else {
echo "Вход";
}
5. Логирование действий авторизованного пользователя
Метод IsAuthorized
также полезен для логирования действий пользователей на сайте. Например, можно записывать действия пользователя в логи, если он авторизован.
if ($USER->IsAuthorized()) {
// Логируем действия пользователя
LogUserAction($USER->GetID(), "Просмотр страницы");
}
6. Защита формы от неавторизованных пользователей
Метод можно использовать для защиты форм на сайте от неавторизованных пользователей. В случае если пользователь не авторизован, можно вывести сообщение с просьбой войти в систему.
if ($USER->IsAuthorized()) {
// Отображаем форму для авторизованных пользователей
echo "";
} else {
echo "Вы должны войти, чтобы отправить форму.";
}
7. Отображение сообщения об ошибке при попытке доступа к защищенной странице
Иногда бывает необходимо ограничить доступ к некоторым страницам только для авторизованных пользователей. В таких случаях можно вывести ошибку, если попытка доступа идет от неавторизованного пользователя.
if (!$USER->IsAuthorized()) {
echo "Ошибка: Вы должны быть авторизованы для доступа к этой странице.";
}
8. Использование в AJAX-запросах
Метод IsAuthorized
также можно использовать в обработчиках AJAX-запросов для проверки авторизации пользователя перед выполнением запроса.
if ($USER->IsAuthorized()) {
// Обработка AJAX-запроса
echo json_encode(["status" => "success"]);
} else {
echo json_encode(["status" => "error", "message" => "Не авторизован"]);
}
Пример решения задачи по обработке обращений в техподдержку от авторизованных и анонимных пользователей
В некоторых случаях требуется получать обращения в техподдержку как от авторизованных пользователей, так и от анонимных. Для этого можно использовать следующую схему.
Шаг 1. Создаем пользователя anonymous
Необходимо создать специального пользователя с именем "anonymous", который будет иметь минимальные права для создания обращения в техподдержку.
Шаг 2. Принудительная авторизация пользователя "anonymous"
На странице создания обращения необходимо принудительно авторизовать пользователя под аккаунтом "anonymous", если он не авторизован.
if (!$USER->IsAuthorized()) {
$USER->Authorize(44); // 44 - ID пользователя anonymous
}
Шаг 3. Кастомизация компонента создания обращения
Необходимо кастомизировать шаблон компонента support.ticket.edit
, добавив обязательное поле email для пользователя "anonymous". Это обеспечит сбор необходимых данных, даже если пользователь не авторизован.
Шаг 4. Обработчик OnAfterTicketAdd
Для корректной обработки обращений, поступивших от анонимных пользователей, можно создать обработчик события OnAfterTicketAdd
, который будет изменять источник обращения на email и указывать email автора через CTicket::Set
.
AddEventHandler("support", "OnAfterTicketAdd", "OnAfterTicketAddHandler");
function OnAfterTicketAddHandler($ID, $arFields) {
if ($arFields["CREATED_BY"] == 44) {
// Изменяем источник обращения на email
$ticket = new CTicket;
$ticket->Set($ID, ["SOURCE" => "email", "EMAIL" => $arFields["EMAIL"]]);
}
}
Теперь новое обращение будет выглядеть так, как будто оно пришло по email. Автор будет получать ответы на свой email, даже если изначально не был авторизован.
Заключение
Метод IsAuthorized
— это инструмент для контроля доступа и персонализации контента в 1С-Битрикс. Он позволяет проверять статус авторизации пользователя и в зависимости от этого отображать различные части сайта, выполнять определенные действия или ограничивать доступ. Используя приведенные примеры, можно легко интегрировать проверку авторизации в своем проекте, а также решать более сложные задачи, такие как обработка обращений в техподдержку от авторизованных и анонимных пользователей.