Телеграм: @bazarow_ru Почта: mihail@bazarow.ru

Если пользователь авторизован то... API Битрикс

Просмотров: 24626

Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, некую информацию, доступную только для авторизованного пользователя. Например поздравить его (пользователя) со входом или поблагодарить за возвращение. В самом простом случае вывести кнопку "Выйти". Для этого можно воспользоваться API Битрикс и классом CUser - класс для работы с пользователями

Используем метод IsAuthorized- авторизован ли пользователь

Использую простой пример. Задача: если пользователь авторизован нам нужно с ним поздороваться и показать простой баннер-картинку, если не авторизован показываем, в этом же месте, простой текст. Для этого в нужном месте шаблона сайта (там где предполагается показывать баннер) вставляем вот такую конструкцию:

<?if($USER->IsAuthorized()):?>
 <i>&mdash; Здраствуйте</i><br/> 
 <?=(CUser::GetFirstName())?CUser::GetFirstName():CUser::GetLogin()?><br/> 
 <img src="/путь_к_баннеру.png"/> 
 <?else:?> 
 У нас самый лучший и удобный сайт на свете 
 <?endif;?> 

Расшифровка:

<Если пользователь авторизован> 
 &mdash; Здраствуйте<br/> 
 < Имя или Логин (если нет имени) ><br/> 
 картинка баннер 
 <иначе> 
 У нас самый лучший и удобный сайт на свете 
 <?endif;?> 

Таким же образом вы можете комбинировать или использовать методы класса CUser, все они освещены в документации по Битрикс, во многих из них есть "живые" примеры использования CUser в документации

Например, вывести в любом месте сайта аватарку пользователя можно вот так:

<?
 if ($USER->IsAuthorized()) //Если пользователь авторизован 
 { 
 $rsUser = CUser::GetByID($USER->GetID()); //$USER->GetID() - получаем ID авторизованного пользователя и сразу же  его поля 
 $arUser = $rsUser->Fetch(); 
 $arResult["PERSONAL_PHOTO_HTML"] = CFile::ShowImage($arUser["PERSONAL_PHOTO"], 150, 150, "border=0", "", true); //$arUser["PERSONAL_PHOTO"] - тут находится id аватарки, здесь мы получим HTML-код для вывода нужного изображения 
 } 
 ?> 
 <?=$arResult["PERSONAL_PHOTO_HTML"]?> 

Успехов.

Михаил Базаров 18.12.2013
Если нужно показать что-то определенной группе пользователей. Например группа "Контент-редакторы" с ID = 4
Код
<?
   $arGroups = CUser::GetUserGroup($USER->GetID());
   for ($i=0; $i < count($arGroups); $i++) if ($arGroups[$i] == 4):
?> 
 
 текст или чего там собрались показывать 
 
<?endif;?>  
Nikita Androsov 27.09.2017
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.  
Михаил Базаров 27.09.2017
Цитата
Nikita Androsov написал:
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.  
Да, все просто)
Код
<?if(CUser::IsAuthorized()){
     header('Location: /');
}else{?> 
     Вызываем компонент авторизации
<?}?>  
Nikita Androsov 28.09.2017
Цитата
Михаил Базаров пишет:
Цитата
Nikita Androsov написал:
через этот метод также можно сделать перенаправление на нужную страницу после успешной авторизации ?)
а то что то не получилось разобраться с BACKURL.
Да, все просто)
Код
 <?if(CUser::IsAuthorized()){
     header('Location: /');
}else{?> 
     Вызываем компонент авторизации
<?}?>  
 
А можно как-то добавить условие, допустим пользователь авторизован и пренадлежит к группе с таким-то ID {что то выводим} иначе { выводим другое} ??  
Михаил Базаров 28.09.2017
Цитата
Nikita Androsov написал

А можно как-то добавить условие, допустим пользователь авторизован и пренадлежит к группе с таким-то ID {что то выводим} иначе { выводим другое} ??  
Ну так это выше уже есть
Код
<?
   $arGroups = CUser::GetUserGroup($USER->GetID());
   for ($i=0; $i < count($arGroups); $i++) if ($arGroups[$i] == 4): //Если текущий пользователь из 4-ой группы
?> 
 
 текст или чего там собрались показывать 
 
<?endif;?>  

Проверять на авторизацию не обязательно (лишний запрос на ровном месте)