- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
- Класс: CAllControllerMember
- Вызов: CAllControllerMember::CheckUserAuth
static function CheckUserAuth($member_id, $login, $password)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$arMember = CControllerMember::GetMember($member_id);
if(!$arMember)
return false;
// send query to the client in order to check authorization
$arParameters = array("login"=>$login, "password"=>$password);
$oRequest = new CControllerServerRequestTo($arMember, 'check_auth', $arParameters);
$oResponse = $oRequest->Send();
if($oResponse === false)
return false;
if($oResponse->OK() === false)
{
$e = new CApplicationException($oResponse->text);
$APPLICATION->ThrowException($e);
return false;
}
elseif(COption::GetOptionString("controller", "auth_trans_enabled", "N") === "Y")
{
$current_groups = $oResponse->arParameters['USER_INFO']["GROUP_ID"];
$arRemGroups = BitrixControllerGroupMapTable::getMapping("LOCAL_GROUP_CODE", "REMOTE_GROUP_CODE");
}
elseif(COption::GetOptionString("controller", "auth_controller_enabled", "N") === "Y")
{
$current_groups = $oResponse->arParameters['USER_INFO']["GROUP_ID"];
$arRemGroups = BitrixControllerGroupMapTable::getMapping("LOCAL_GROUP_CODE", "CONTROLLER_GROUP_ID");
}
else
{
return false;
}
$GROUP_ID = array();
$GROUPS_TO_ADD = array();
$GROUPS_TO_DELETE = array();
foreach($arRemGroups as $arTGroup)
{
$bFound = false;
foreach($current_groups as $group_id)
{
if($arTGroup["FROM"] == $group_id)
{
$GROUP_ID[] = $arTGroup["TO"];
$GROUPS_TO_ADD[] = $arTGroup["TO"];
$bFound = true;
}
}
if(!$bFound)
$GROUPS_TO_DELETE[] = $arTGroup["TO"];
}
$oResponse->arParameters['USER_INFO']['GROUP_ID'] = $GROUP_ID;
$oResponse->arParameters['USER_INFO']['GROUPS_TO_ADD'] = $GROUPS_TO_ADD;
$oResponse->arParameters['USER_INFO']['GROUPS_TO_DELETE'] = $GROUPS_TO_DELETE;
// return to the client
return $oResponse->arParameters;
}