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;
 }
Exemple #2
0
         $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"])) {