- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/openid.php
- Класс: COpenIDClient
- Вызов: COpenIDClient::GetRedirectUrl
function GetRedirectUrl($identity, $return_to=false)
{
if (strlen($identity) <= 0)
{
$GLOBALS['APPLICATION']->ThrowException(GetMessage('OPENID_CLIENT_EMPTY_IDENTITY'));
return false;
}
if (strlen($identity) > 1024)
$identity = substr($identity, 0, 1024); // may be 256 ????
$port = ($_SERVER['SERVER_PORT'] > 0 && $_SERVER['SERVER_PORT'] <> 80? ':'.$_SERVER['SERVER_PORT']:'');
if ($return_to === false)
$return_to = 'http://'.$_SERVER['SERVER_NAME'].$port.$GLOBALS['APPLICATION']->GetCurPageParam('', array(), false);
if (strpos(strtolower($identity), 'http://') === false && strpos(strtolower($identity), 'https://') === false)
$identity = 'http://' . $identity;
$_SESSION['BX_OPENID_IDENTITY'] = $identity;
if ($arOpenidServerTags = $this->GetOpenIDServerTags($identity))
{
if (!$this->CheckTrustProviders($arOpenidServerTags['server']))
{
$GLOBALS['APPLICATION']->ThrowException(GetMessage('OPENID_CLIENT_CHECK_TRUST_PRIVIDERS_FAULT'));
return false;
}
if (strlen($arOpenidServerTags['delegate']) > 0)
$identity = $arOpenidServerTags['delegate'];
$trust_root = COption::GetOptionString('main', 'OPENID_TRUST_ROOT', '', SITE_ID);
if (strlen($trust_root) <= 0)
$trust_root = 'http://'.$_SERVER['SERVER_NAME'].$port.'/';
$url = $arOpenidServerTags['server'] . (strpos($arOpenidServerTags['server'], '?')!==false ? '&' : '?') .
'openid.mode=checkid_setup' .
'&openid.return_to=' . urlencode($return_to) .
'&openid.identity=' . urlencode($identity) .
'&openid.trust_root=' . urlencode($trust_root);
$sreg_required = COption::GetOptionString('main', 'OPENID_SREG_REQUIRED', 'email,fullname,gender');
if (strlen($sreg_required) > 0)
$url .= '&openid.sreg.required=' . urlencode($sreg_required);
return $url;
}
return false;
}