%PDF- %PDF-
| Direktori : /proc/self/root/proc/10576/cwd/home/bitrix/www/bitrix/modules/controller/admin/ |
| Current File : //proc/self/root/proc/10576/cwd/home/bitrix/www/bitrix/modules/controller/admin/controller_goto.php |
<?
define("NOT_CHECK_PERMISSIONS", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
/** @global CMain $APPLICATION */
/** @global CDatabase $DB */
/** @global CUser $USER */
$member_id = intval($_REQUEST['member']);
if (!CModule::IncludeModule("controller"))
{
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$bCanAuthorize = false;
$bAsAdmin = false;
if ($USER->CanDoOperation("controller_member_auth_admin"))
{
$bCanAuthorize = true;
$bAsAdmin = true;
}
elseif ($USER->CanDoOperation("controller_member_auth"))
{
$bCanAuthorize = true;
$bAsAdmin = false;
}
elseif ($member_id > 0 && $USER->IsAuthorized())
{
foreach (\Bitrix\Controller\AuthGrantTable::getControllerMemberScopes($member_id, $USER->GetID(), $USER->GetUserGroupArray()) as $grant)
{
if ($grant["SCOPE"] === "user")
{
$bCanAuthorize = true;
}
elseif ($grant["SCOPE"] === "admin")
{
$bCanAuthorize = true;
$bAsAdmin = true;
}
}
}
if (!$bCanAuthorize)
{
LocalRedirect("/bitrix/admin/controller_member_admin.php");
}
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/controller/prolog.php");
IncludeModuleLangFile(__FILE__);
$dbr = CControllerMember::GetByID($member_id);
$ar = $dbr->GetNext();
if (!$ar)
{
LocalRedirect("/bitrix/admin/controller_member_admin.php");
}
if ($bAsAdmin)
{//Authorize as admin
$param = 'Array(
"LOGIN"=>"'.EscapePHPString($USER->GetParam("LOGIN")).'",
"NAME"=>"'.EscapePHPString($USER->GetParam("FIRST_NAME")).'",
"LAST_NAME"=>"'.EscapePHPString($USER->GetParam("LAST_NAME")).'",
"EMAIL"=>"'.EscapePHPString($USER->GetParam("EMAIL")).'",
)';
$query = '
CControllerClient::AuthorizeAdmin('.$param.');
LocalRedirect("/");
';
$arControllerLog = Array(
'NAME' => 'AUTH',
'CONTROLLER_MEMBER_ID' => $ar["ID"],
'DESCRIPTION' => GetMessage("CTRLR_LOG_GOADMIN").' ('.$USER->GetParam("LOGIN").')',
'STATUS' => 'Y',
);
}
else
{//Authorize as user
$arGroups = array();
$arUserGroups = $USER->GetUserGroupArray();
$arLocGroups = \Bitrix\Controller\GroupMapTable::getMapping("CONTROLLER_GROUP_ID", "REMOTE_GROUP_CODE");
foreach ($arLocGroups as $arTGroup)
{
foreach ($arUserGroups as $group_id)
{
if ($arTGroup["FROM"] == $group_id)
$arGroups[] = EscapePHPString($arTGroup["TO"]);
}
}
if (count($arGroups) > 0)
$strGroups = '"GROUP_ID" => Array("'.implode('", "', $arGroups).'"),';
else
$strGroups = '';
$param = 'Array(
'.$strGroups.'
"LOGIN"=>"'.EscapePHPString($USER->GetParam("LOGIN")).'",
"NAME"=>"'.EscapePHPString($USER->GetParam("FIRST_NAME")).'",
"LAST_NAME"=>"'.EscapePHPString($USER->GetParam("LAST_NAME")).'",
"EMAIL"=>"'.EscapePHPString($USER->GetParam("EMAIL")).'",
)';
$query = '
CControllerClient::AuthorizeUser('.$param.');
LocalRedirect("/");
';
$arControllerLog = Array(
'NAME' => 'AUTH',
'CONTROLLER_MEMBER_ID' => $ar["ID"],
'DESCRIPTION' => GetMessage("CTRLR_LOG_GOUSER").' ('.$USER->GetParam("LOGIN").')',
'STATUS' => 'Y',
);
}
CControllerLog::Add($arControllerLog);
if (\Bitrix\Controller\AuthLogTable::isEnabled())
{
\Bitrix\Controller\AuthLogTable::logControllerToSiteAuth(
$ar["ID"],
$USER->GetID(),
true,
'CONTROLLER_GOTO',
$USER->GetParam("FIRST_NAME").' '.$USER->GetParam("LAST_NAME").' ('.$USER->GetParam("LOGIN").')'
);
}
$result = CControllerMember::RunCommandRedirect($ar["ID"], $query, array(), false);
if ($result !== false)
{
LocalRedirect($ar["URL"]."/bitrix/main_controller.php?lang=".LANGUAGE_ID, true);
}
else
{
$e = $APPLICATION->GetException();
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError("Error: ".$e->GetString());
?>
<a href="/bitrix/admin/controller_member_admin.php?lang=<?=LANGUAGE_ID?>"><? echo GetMessage("CTRLR_GOTO_BACK") ?></a>
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}