public function AuthorizeUser($arFields) { if (!isset($arFields['XML_ID']) || $arFields['XML_ID'] == '') { return false; } if (!isset($arFields['EXTERNAL_AUTH_ID']) || $arFields['EXTERNAL_AUTH_ID'] == '') { return false; } $errorCode = 1; if ($GLOBALS["USER"]->IsAuthorized() && $GLOBALS["USER"]->GetID()) { $id = CSocServAuthDB::Add($arFields); if ($id && $_SESSION["OAUTH_DATA"] && is_array($_SESSION["OAUTH_DATA"])) { CSocServAuthDB::Update($id, $_SESSION["OAUTH_DATA"]); unset($_SESSION["OAUTH_DATA"]); } } else { $dbSocUser = CSocServAuthDB::GetList(array(), array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => $arFields['EXTERNAL_AUTH_ID']), false, false, array("USER_ID", "ACTIVE")); $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"))); $dbUsersNew = $GLOBALS["USER"]->GetList($by, $ord, array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => 'socservices', 'ACTIVE' => 'Y'), array('NAV_PARAMS' => array("nTopCount" => "1"))); if ($arUser = $dbSocUser->Fetch()) { if ($arUser["ACTIVE"] === 'Y') { $USER_ID = $arUser["USER_ID"]; } } elseif ($arUser = $dbUsersOld->Fetch()) { $USER_ID = $arUser["ID"]; } elseif ($arUser = $dbUsersNew->Fetch()) { $USER_ID = $arUser["ID"]; } elseif (COption::GetOptionString("main", "new_user_registration", "N") == "Y") { $arFields['PASSWORD'] = randString(30); //not necessary but... $arFields['LID'] = SITE_ID; $def_group = COption::GetOptionString('main', 'new_user_registration_def_group', ''); if ($def_group != '') { $arFields['GROUP_ID'] = explode(',', $def_group); } $arFieldsUser = $arFields; $arFieldsUser["EXTERNAL_AUTH_ID"] = "socservices"; if (!($USER_ID = $GLOBALS["USER"]->Add($arFieldsUser))) { return false; } $arFields['CAN_DELETE'] = 'N'; $arFields['USER_ID'] = $USER_ID; $id = CSocServAuthDB::Add($arFields); if ($id && $_SESSION["OAUTH_DATA"] && is_array($_SESSION["OAUTH_DATA"])) { CSocServAuth::Update($id, $_SESSION["OAUTH_DATA"]); unset($_SESSION["OAUTH_DATA"]); } unset($arFields['CAN_DELETE']); } elseif (COption::GetOptionString("main", "new_user_registration", "N") == "N") { $errorCode = 2; } if (isset($USER_ID) && $USER_ID > 0) { $GLOBALS["USER"]->Authorize($USER_ID); } else { return $errorCode; } //it can be redirect after authorization, so no spreading. Store cookies in the session for next hit $GLOBALS['APPLICATION']->StoreCookies(); } return true; }
$arPerm = $_POST["SPERM"]; } $arFields = array("PERMISSIONS" => serialize($arPerm)); $arFields['SEND_ACTIVITY'] = 'N'; $arFields['USER_ID'] = $SONET_USER_ID; if (isset($_POST["ss-send-my-actives"]) && $_POST["ss-send-my-actives"] == 'Y') { $arFields['SEND_ACTIVITY'] = 'Y'; } if (is_array($_POST["USER_ID_TWITTER"])) { foreach ($_POST["USER_ID_TWITTER"] as $value) { CSocServAuth::Update($value, $arFields); } } if (is_array($_POST["USER_ID_OTHER"])) { foreach ($_POST["USER_ID_OTHER"] as $value) { CSocServAuth::Update($value, array("SEND_ACTIVITY" => $arFields['SEND_ACTIVITY'], "USER_ID" => $arFields['USER_ID'])); } } } $arPICTURE = array(); $arPICTURE_WORK = array(); //PERSONAL_PHOTO upload //bitrix24 template if ($_POST['PERSONAL_PHOTO_ID'] && intval($_POST['PERSONAL_PHOTO_ID']) > 0 && intval($_POST['PERSONAL_PHOTO_ID']) != intval($arResult["User"]["PERSONAL_PHOTO"])) { if (in_array($_POST['PERSONAL_PHOTO_ID'], \Bitrix\Main\UI\FileInputUtility::instance()->checkFiles('PERSONAL_PHOTO_IMAGE_ID', array($_POST['PERSONAL_PHOTO_ID'])))) { $arPICTURE = CFile::MakeFileArray($_POST['PERSONAL_PHOTO_ID']); } } elseif (strlen($_FILES["PERSONAL_PHOTO"]["name"]) > 0) { $arPICTURE = $_FILES["PERSONAL_PHOTO"]; } if (sizeof($arPICTURE) != 0 || isset($_POST["PERSONAL_PHOTO_del"])) {