Данные проверки помогают встроить в шаблоны и компоненты дополнительные участки кода и информации
Как проверить авторизован пользователь или нет в Битриксе?
Как вы возможно знаете, в битриксе есть объект с данными пользователями. А всё потому что:
При запуске каждой страницы автоматически создаётся объект этого класса $USER – данные о текущем пользователе.
Даже в коде компонентов, в комментариях можно заметить следующий код:
global $USER;
В документации есть целый класс – CUser.
Чтобы узнать ID текущего пользователя нужно прописать:
$USER->GetID();
Как узнать что пользователь авторизован?
if ($USER->IsAuthorized()) { // пользователь авторизован .. } else {} .. if (!$USER->IsAuthorized()) { // пользователь не авторизован
Как проверить что пользователь администратор в Битриксе?
Аналогичным способом можем вывести:
if ($USER->IsAdmin()) { ..
Давайте теперь посмотрим на примере, как можно использовать:
function dump($var){ global $USER; if ($USER->IsAdmin()) { echo 'pre'; print_r($var); echo '/pre'; } }
Данная функция будет распечатывать данные массива только для админов, что позволяет удобно дебажить код даже на рабочем проекте.
Теперь пример для авторизованных пользователей. Рассмотрим как выглядит массив меню с учетом нашей задачи:
Array( "Избранное", "/personal/favorite/", Array(), Array(), "" ), Array( "Мои заказы", "/personal/orders/", Array(), Array(), 'CUser::IsAuthorized()' ), Array( "Выйти", "?logout=yes", Array(), Array(), 'CUser::IsAuthorized()' ),
Как видите, лишь первый пункт меню будет общим для всех, а 2 других появятся только для авторизованных пользователей. Таким же образом можно добавить проверку на админа битрикса. Ну и конечно же if \ else никто не отменял, его тоже можно использовать в своих шаблонах и компонентах.
Также, мы можем внутри шаблона добавить условие, выбираем параметр PHP и пишем:
$USER->IsAuthorized()
Для комбинированного условия пишем:
CSite::InDir('/partners/') && $USER->IsAuthorized()