• Модуль: 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;
}