• Модуль: controller
  • Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
  • Класс: CAllControllerMember
  • Вызов: CAllControllerMember::RegisterMemberByPassword
static function RegisterMemberByPassword($ar_member, $admin_login, $admin_password, $controller_url = false)
{
	/** @global CMain $APPLICATION */
	global $APPLICATION;

	if($controller_url===false)
		$controller_url = COption::GetOptionString("controller", "controller_url", ($APPLICATION->IsHTTPS()?"https://":"http://").$_SERVER['HTTP_HOST']);

	if(!isset($ar_member['MEMBER_ID']))
		$ar_member['MEMBER_ID'] = "m".BitrixMainSecurityRandom::getString(31);

	if(!isset($ar_member['SECRET_ID']))
		$ar_member['SECRET_ID'] = "m".BitrixMainSecurityRandom::getString(31);

	if(!CControllerMember::CheckFields($ar_member))
		return false;

	$arParameters = Array(
		"member_id" => $ar_member['MEMBER_ID'],
		"member_secret_id" => $ar_member['SECRET_ID'],
		"controller_url" => $controller_url,
		"admin_login" => $admin_login,
		"admin_password" => $admin_password,
		"join_command" => '
			COption::SetOptionString("main", "controller_member", "Y");
			COption::SetOptionString("main", "controller_ticket", "");
			RegisterModuleDependences("main", "OnUserLoginExternal", "main", "CControllerClient", "OnExternalLogin", 1);
			RegisterModuleDependences("main", "OnExternalAuthList", "main", "CControllerClient", "OnExternalAuthList");
		',
		"disconnect_command" => '
			CControllerClient::RestoreAll();
			COption::SetOptionString("main", "controller_member", "N");
			COption::SetOptionString("main", "controller_member_id", "");
			COption::SetOptionString("main", "controller_url", "");
			UnRegisterModuleDependences("main", "OnUserLoginExternal", "main", "CControllerClient", "OnExternalLogin");
			UnRegisterModuleDependences("main", "OnExternalAuthList", "main", "CControllerClient", "OnExternalAuthList");
		'
	);

	$oRequest = new CControllerServerRequestTo($ar_member, "simple_register", $arParameters);
	if(($oResponse = $oRequest->Send())===false)
	{
		return false;
	}

	$result = $oResponse->OK();

	if($result === false)
	{
		$e = new CApplicationException($oResponse->text);
		$APPLICATION->ThrowException($e);
	}
	else
	{
		$APPLICATION->ResetException();
		if($ID = CControllerMember::Add($ar_member))
		{
			$arControllerLog = Array(
				'NAME'=>'REGISTRATION',
				'CONTROLLER_MEMBER_ID'=>$ID,
				'DESCRIPTION'=>GetMessage("CTRLR_MEM_LOG_DESC_JOIN_BY_TICKET"),
				'STATUS'=>'Y'
			);
			CControllerLog::Add($arControllerLog);
			CControllerMember::SetGroupSettings($ID);
			return $ID;
		}
	}

	return false;
}