Битрикс – как проверить на авторизованного пользователя и на админа

Данные проверки помогают встроить в шаблоны и компоненты дополнительные участки кода и информации

Как проверить авторизован пользователь или нет в Битриксе?

Как вы возможно знаете, в битриксе есть объект с данными пользователями. А всё потому что:
При запуске каждой страницы автоматически создаётся объект этого класса $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()

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *