Бортовой журнал Ктулху

Битрикс: работа со свойствами пользователя

Все приведенные примеры по работе со свойствами пользователя есть в официальной документации и на форуме, в этой статье я публикую то, с чем мне пришлось столкнуться.

Получим массив групп пользователя ID=12

$arGroups = CUser::GetUserGroup(12);
echo "<pre>"; print_r($arGroups); echo "</pre>";
Получим массив групп текущего пользователя
global $USER;
$arGroups = $USER->GetUserGroupArray();
echo "<pre>"; print_r($arGroups); echo "</pre>";
Авторизован ли пользователь
global $USER;
if ($USER->IsAuthorized()) echo "Вы авторизованы!";

Принудительно авторизуемся под админом:
global $USER;
$USER->Authorize(1);

Если пользователь админ

if ($USER->IsAdmin())
{
// действие
}

Принудительно разлогинемся

global $USER;
$USER->Logout();

Данные текущего пользователя

global $USER;

$USER->ChangePassword("admin", "WRD45GT", "123456", "123456");
логин, контрольная строка, новый пароль, подтверждение

if ($USER->IsAuthorized()) echo "Вы авторизованы!";

$USER->GetID()
$USER->GetLogin()
$USER->GetFullName()
$USER->GetFirstName()
$USER->GetLastName()
$USER->GetEmail()
$USER->GetParam("EMAIL")
AUTHORIZED - если пользователь авторизован, то "Y"
USER_ID - ID пользователя
LOGIN - логин
EMAIL - E-mail
NAME - полное имя (не только имя пользователя, но и фамилию)
GROUPS - массив групп, которым принадлежит пользователь
ADMIN - true, если пользователь принадлежит группе администраторов
PASSWORD_HASH - соль и хеш пароля с солью
$salt . md5($salt . $pass)
где $salt - 8 случайных символов, которые меняются при каждой смене пароля.
FIRST_NAME - имя пользователя
LAST_NAME - фамилия пользователя
SECOND_NAME - отчество пользователя

Все дополнительные поля

К сожалению нет специального метода для получения таких полей как личная информация и рабочая информация, поэтому все через GetList:

$by = "ID";
$order = "ASC";
$rsUser = CUser::GetList(($by="ID"), ($order="desc"), array("ID"=>$USER->GetID()),array("SELECT"=>array("UF_*"));
if ($arUser = $rsUser->Fetch())
{
echo "<pre>";
print_r($arUser);
echo "</pre>";
}

Обновление данных пользователя
<?
$user = new CUser;
$fields = Array(
"NAME" => "Сергей",
"LAST_NAME" => "Иванов",
"EMAIL" => "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ";,"> Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ",
"LOGIN" => "ivan",
"LID" => "ru",
"ACTIVE" => "Y",
"GROUP_ID" => array(1,2),
"PASSWORD" => "123456",
"CONFIRM_PASSWORD" => "123456",
"UF_SHOP" => array(11,12,13),
);
$user->Update($ID, $fields);
$strError .= $user->LAST_ERROR;
?>

Фото пользователя
CFile::GetPath($arUser['PERSONAL_PHOTO'])

Восстановление пароля
<?$APPLICATION->IncludeComponent( "bitrix:system.auth.forgotpasswd",
".default",
Array()
);?>