%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/modules/controller/admin/
Upload File :
Create Path :
Current File : //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");
}

Zerion Mini Shell 1.0