- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/user.php
- Класс: CAllUser
- Вызов: CAllUser::UpdateSessionData
protected function UpdateSessionData(AuthenticationContext $context, $onlyActive = true)
{
global $DB, $APPLICATION;
unset(static::$kernelSession["SESS_OPERATIONS"]);
$APPLICATION->SetNeedCAPTHA(false);
$strSql =
"SELECT U.* " .
"FROM b_user U " .
"WHERE U.ID = " . $context->getUserId();
if ($onlyActive)
{
$strSql .= " AND U.ACTIVE = 'Y' AND U.BLOCKED <> 'Y' ";
}
$result = $DB->Query($strSql);
if ($arUser = $result->Fetch())
{
$data = [
"LOGIN" => $arUser["LOGIN"],
"EMAIL" => $arUser["EMAIL"],
"TITLE" => $arUser["TITLE"],
"NAME" => $arUser["NAME"] . ($arUser["NAME"] == '' || $arUser["LAST_NAME"] == '' ? '' : ' ') . $arUser["LAST_NAME"],
"FIRST_NAME" => $arUser["NAME"],
"SECOND_NAME" => $arUser["SECOND_NAME"],
"LAST_NAME" => $arUser["LAST_NAME"],
"PERSONAL_PHOTO" => $arUser["PERSONAL_PHOTO"],
"PERSONAL_GENDER" => $arUser["PERSONAL_GENDER"],
"EXTERNAL_AUTH_ID" => $arUser["EXTERNAL_AUTH_ID"],
"XML_ID" => $arUser["XML_ID"],
"ADMIN" => false,
"POLICY" => static::getPolicy($arUser["ID"])->getValues(),
"AUTO_TIME_ZONE" => trim((string)$arUser["AUTO_TIME_ZONE"]),
"TIME_ZONE" => $arUser["TIME_ZONE"],
"GROUPS" => MainUserTable::getUserGroupIds($arUser["ID"]),
"CONTEXT" => json_encode($context),
];
foreach ($data["GROUPS"] as $groupId)
{
if ($groupId == 1)
{
$data["ADMIN"] = true;
break;
}
}
static::$kernelSession["SESS_AUTH"] = $data;
// flag for IsAdmin() optimization
$this->admin = null;
$this->context = $context;
return $arUser;
}
return false;
}