12 $this->_trust_providers = array_filter($t);
17 if (
count($this->_trust_providers) <= 0)
21 foreach ($this->_trust_providers as
$p)
22 if (mb_strpos($arUrl[
'host'],
$p) !==
false)
35 if (preg_match(
'/<link[^>]+rel=(["\'])([^>"]*\s)?openid\.server(\s[^>"]*)?\1[^>]*>/i',
$str, $arLinks))
36 if (preg_match(
'/href=["\']([^"|\']+)["\']/i', $arLinks[0], $arHref))
39 if (preg_match(
'/<link[^>]+rel=(["\'])([^>"]*\s)?openid.delegate(\s[^>"]*)?\1[^>]*>/i',
$str, $arLinks))
40 if (preg_match(
'/href=["\']([^"|\']+)["\']/i', $arLinks[0], $arHref))
41 $delegate = $arHref[1];
45 $GLOBALS[
'APPLICATION']->ThrowException(
GetMessage(
'OPENID_CLIENT_NO_OPENID_SERVER_TAG'));
48 return array(
'server' => $server,
'delegate' => $delegate);
50 $GLOBALS[
'APPLICATION']->ThrowException(
GetMessage(
'OPENID_CLIENT_NO_OPENID_SERVER_TAG'));
62 if (mb_strlen($identity) > 1024)
63 $identity = mb_substr($identity, 0, 1024);
65 if (mb_strpos(mb_strtolower($identity),
'http://') ===
false && mb_strpos(mb_strtolower($identity),
'https://') ===
false)
66 $identity =
'http://' . $identity;
68 $_SESSION[
'BX_OPENID_IDENTITY'] = $identity;
74 $GLOBALS[
'APPLICATION']->ThrowException(
GetMessage(
'OPENID_CLIENT_CHECK_TRUST_PRIVIDERS_FAULT'));
78 $protocol = (CMain::IsHTTPS() ?
"https" :
"http");
79 $port = (
$_SERVER[
'SERVER_PORT'] > 0 &&
$_SERVER[
'SERVER_PORT'] <> 80 &&
$_SERVER[
'SERVER_PORT'] <> 443?
':'.$_SERVER[
'SERVER_PORT']:
'');
82 if ($return_to ===
false)
83 $return_to = $server_name.$GLOBALS[
'APPLICATION']->GetCurPageParam(
'', [],
false);
85 $return_to = preg_replace(
"|amp%3B|",
'', $return_to);
87 if ($arOpenidServerTags[
'delegate'] <>
'')
88 $identity = $arOpenidServerTags[
'delegate'];
90 $trust_root = $server_name.
'/';
92 $url = $arOpenidServerTags[
'server'] . (mb_strpos($arOpenidServerTags[
'server'],
'?') !==
false ?
'&' :
'?').
93 'openid.mode=checkid_setup'.
94 '&openid.return_to='.urlencode($return_to).
95 '&openid.identity='.urlencode($identity).
96 '&openid.trust_root='.urlencode($trust_root).
97 '&openid.sreg.required=email,fullname'.
98 '&openid.sreg.optional=gender,dob,postcode,country,timezone';
99 $_SESSION[
'BX_OPENID_RETURN_TO'] = $return_to;
112 'openid.assoc_handle' => $_GET[
'openid_assoc_handle'],
113 'openid.signed' => $_GET[
'openid_signed'],
114 'openid.sig' => $_GET[
'openid_sig'],
116 $arSigned = explode(
',', $_GET[
'openid_signed']);
117 foreach ($arSigned as $s)
118 $arParams[
'openid.' . $s] = $_GET[
'openid_' . str_replace(
'.',
'_', $s)];
120 $arParams[
'openid.mode'] =
'check_authentication';
121 if(isset($_SESSION[
'BX_OPENID_RETURN_TO']))
123 $arParams[
'openid.return_to'] = $_SESSION[
'BX_OPENID_RETURN_TO'];
124 unset($_SESSION[
'BX_OPENID_RETURN_TO']);
129 if (preg_match(
'/is_valid\s*\:\s*/u',
$str))
132 'server' => $arOpenidServerTags[
'server'],
133 'identity' => $_GET[
'openid_identity']
149 $arKillParams =
array(
"check_key");
150 foreach (array_keys($_GET) as
$k)
151 if (mb_strpos(
$k,
'openid_') === 0)
152 $arKillParams[] =
$k;
153 if ($state ==
'ERROR')
155 $redirect_url =
$GLOBALS[
'APPLICATION']->GetCurPageParam(($state ==
'ERROR' ?
'auth_service_error=1' :
''), $arKillParams,
false);
166 'EXTERNAL_AUTH_ID' =>
'OPENID#' . $arOpenID[
'server'],
167 'XML_ID' => $arOpenID[
'identity'],
170 "PERSONAL_WWW" => $arOpenID[
'identity'],
173 if (array_key_exists(
'openid_sreg_email', $_GET))
174 $arFields[
'EMAIL'] = $_GET[
'openid_sreg_email'];
176 if (array_key_exists(
'openid_sreg_gender', $_GET) && ($_GET[
'openid_sreg_gender'] ==
'M' || $_GET[
'openid_sreg_gender'] ==
'F'))
177 $arFields[
'PERSONAL_GENDER'] = $_GET[
'openid_sreg_gender'];
179 if (array_key_exists(
'openid_sreg_fullname', $_GET))
181 $fullname = $_GET[
'openid_sreg_fullname'];
182 $fullname = trim($fullname);
183 if (($pos = mb_strpos($fullname,
' ')) !==
false)
185 $arFields[
'NAME'] = mb_substr($fullname, 0, $pos);
186 $arFields[
'LAST_NAME'] = mb_substr($fullname, $pos + 1);
194 if (array_key_exists(
'openid_sreg_postcode', $_GET))
195 $arFields[
'PERSONAL_ZIP'] = $_GET[
'openid_sreg_postcode'];
197 if (array_key_exists(
'openid_sreg_timezone', $_GET))
198 $arFields[
'TIME_ZONE'] = $_GET[
'openid_sreg_timezone'];
200 if (array_key_exists(
'openid_sreg_country', $_GET))
203 if (array_key_exists(
'openid_sreg_dob', $_GET))
204 $arFields[
'PERSONAL_BIRTHDAY'] = CDatabase::FormatDate($_GET[
'openid_sreg_dob'],
"YYYY-MM-DD",
FORMAT_DATE);
206 if (array_key_exists(
'BX_OPENID_IDENTITY', $_SESSION))
207 $arFields[
'LOGIN'] = $_SESSION[
'BX_OPENID_IDENTITY'];
209 $arFields[
'LOGIN'] = $arOpenID[
'identity'];
220 \Bitrix\Socialservices\UserTable::add(
$arFields);
230 $dbUsersOld =
$GLOBALS[
"USER"]->GetList($by, $ord,
array(
'XML_ID'=>
$arFields[
'XML_ID'],
'EXTERNAL_AUTH_ID'=>
$arFields[
'EXTERNAL_AUTH_ID'],
'ACTIVE'=>
'Y'),
array(
'NAV_PARAMS'=>
array(
"nTopCount"=>
"1")));
231 $dbUsersNew =
$GLOBALS[
"USER"]->GetList($by, $ord,
array(
'XML_ID'=>
$arFields[
'XML_ID'],
'EXTERNAL_AUTH_ID'=>
'socservices',
'ACTIVE'=>
'Y'),
array(
'NAV_PARAMS'=>
array(
"nTopCount"=>
"1")));
232 $dbSocUser = \Bitrix\Socialservices\UserTable::getList([
235 '=EXTERNAL_AUTH_ID'=>
$arFields[
'EXTERNAL_AUTH_ID']
237 'select' => [
"USER_ID",
"ACTIVE" =>
"USER.ACTIVE",
"XML_ID"]
239 if($arUser = $dbSocUser->fetch())
241 if($arUser[
"ACTIVE"] ===
'Y')
242 $USER_ID = $arUser[
"USER_ID"];
244 elseif ($arUser = $dbUsersOld->Fetch())
246 $USER_ID = $arUser[
'ID'];
248 elseif($arUser = $dbUsersNew->Fetch())
250 $USER_ID = $arUser[
"ID"];
252 elseif(COption::GetOptionString(
"main",
"new_user_registration",
"N") ==
"Y")
254 $def_group = COption::GetOptionString(
'main',
'new_user_registration_def_group',
'');
256 $arFields[
'GROUP_ID'] = explode(
',', $def_group);
264 foreach(
GetModuleEvents(
"main",
"OnBeforeOpenIDUserAdd",
true) as $arEvent)
268 $arFieldsUser[
"EXTERNAL_AUTH_ID"] =
"socservices";
269 if(!($USER_ID =
$GLOBALS[
"USER"]->Add($arFieldsUser)))
273 \Bitrix\Socialservices\UserTable::add(
$arFields);
277 elseif(COption::GetOptionString(
"main",
"new_user_registration",
"N") ==
"N")
280 if (intval($USER_ID) > 0)
282 if($arUser && $arUser[
"XML_ID"] !==
$arFields[
'XML_ID'])
288 if (intval($USER_ID) > 0)
297 $USER->AuthorizeWithOtp($USER_ID);
299 $arKillParams =
array(
"auth_service_id",
"check_key");
300 foreach (array_keys($_GET) as
$k)
301 if (mb_strpos(
$k,
'openid_') === 0)
302 $arKillParams[] =
$k;
304 $redirect_url =
$APPLICATION->GetCurPageParam(
'', $arKillParams,
false);
306 foreach(
GetModuleEvents(
"main",
"OnBeforeOpenIDAuthFinalRedirect",
true) as $arEvent)
317 $arKillParams =
array(
"check_key");
318 foreach (array_keys($_GET) as
$k)
319 if (mb_strpos(
$k,
'openid') === 0)
320 $arKillParams[] =
$k;
321 $redirect_url =
$APPLICATION->GetCurPageParam(
'auth_service_error='.$errorCode, $arKillParams,
false);
328 if (array_key_exists(
'openid_mode', $_GET) && $_GET[
'openid_mode'] ==
'id_res')
static sGet($url, $follow_redirect=false)
static sPost($url, $arPostData, $follow_redirect=false)
CheckTrustProviders($url)
GetRedirectUrl($identity, $return_to=false)
GetOpenIDServerTags($url)
static GetOpenIDAuthStep($request_var='OPENID_IDENTITY')
static CleanParam($state=false)
static isSplitDenied($arGroups=null)
static isAuthDenied($arGroups)
static CheckUniqueKey($bUnset=true)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
GetCountryIdByCode($code)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
randString($pass_len=10, $pass_chars=false)
LocalRedirect($url, $skip_security_check=false, $status="302 Found")
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
const SOCSERV_REGISTRATION_DENY
const SOCSERV_AUTHORISATION_ERROR
$GLOBALS['_____370096793']