Beispiel #1
0
 protected function getStorageTokens()
 {
     $accessToken = '';
     if ($this->userId > 0) {
         $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $this->userId, "EXTERNAL_AUTH_ID" => static::SERVICE_ID), false, false, array("USER_ID", "XML_ID", "OATOKEN", "OATOKEN_EXPIRES", "REFRESH_TOKEN"));
         $accessToken = $dbSocservUser->Fetch();
     }
     return $accessToken;
 }
Beispiel #2
0
 public function getStorageToken()
 {
     $accessToken = null;
     $userId = intval($this->userId);
     if ($userId > 0) {
         $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $userId, "EXTERNAL_AUTH_ID" => static::ID), false, false, array("OATOKEN", "REFRESH_TOKEN", "OATOKEN_EXPIRES"));
         if ($arOauth = $dbSocservUser->Fetch()) {
             $accessToken = $arOauth["OATOKEN"];
         }
     }
     return $accessToken;
 }
Beispiel #3
0
 public function saveDataDB()
 {
     global $USER;
     $dbSocUser = CSocServAuthDB::GetList(array(), array('XML_ID' => $this->appID, 'PERSONAL_WWW' => $this->portalURI, 'EXTERNAL_AUTH_ID' => "Bitrix24OAuth"), false, false, array("ID"));
     if ($USER->IsAuthorized()) {
         $arFields = array('PERSONAL_WWW' => $this->portalURI, 'XML_ID' => $this->appID, 'EXTERNAL_AUTH_ID' => static::SERVICE_ID, 'USER_ID' => $USER->GetID(), 'OATOKEN' => $this->access_token, 'OATOKEN_EXPIRES' => $this->accessTokenExpires, 'OASECRET' => $this->getSignatureKey(), 'LOGIN' => $this->appID);
         if ($this->refresh_token != '') {
             $arFields['REFRESH_TOKEN'] = $this->refresh_token;
         }
         if ($arUser = $dbSocUser->Fetch()) {
             return CSocServAuthDB::Update($arUser["ID"], $arFields);
         } else {
             return CSocServAuthDB::Add($arFields);
         }
     }
     return true;
 }
Beispiel #4
0
	public function getNewAccessToken($refreshToken = false, $userId = 0, $save = false)
	{
		if($this->appID == false || $this->appSecret == false)
			return false;

		if($refreshToken == false)
			$refreshToken = $this->refresh_token;

		$result = CHTTP::sPostHeader(self::TOKEN_URL, array(
			"refresh_token"=>$refreshToken,
			"client_id"=>$this->appID,
			"client_secret"=>$this->appSecret,
			"grant_type"=>"refresh_token",
		), array(), $this->httpTimeout);

		$this->arResult = CUtil::JsObjectToPhp($result);

		if(isset($this->arResult["access_token"]) && $this->arResult["access_token"] <> '')
		{
			$this->access_token = $this->arResult["access_token"];
			$this->accessTokenExpires = $this->arResult["expires_in"] + time();
			if($save && intval($userId) > 0)
			{
				$dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => intval($userId), "EXTERNAL_AUTH_ID" => "GoogleOAuth"), false, false, array("ID"));
				if($arOauth = $dbSocservUser->Fetch())
					CSocServAuthDB::Update($arOauth["ID"], array("OATOKEN" => $this->access_token,"OATOKEN_EXPIRES" => $this->accessTokenExpires));
			}
			return true;
		}
		return false;
	}
Beispiel #5
0
 private function RefreshToken($socServUserId)
 {
     $result = CHTTP::sPostHeader(self::TOKEN_URL, array("refresh_token" => $this->refresh_token, "client_id" => $this->appID, "client_secret" => $this->appSecret, "grant_type" => "refresh_token"), array(), $this->httpTimeout);
     $arResult = CUtil::JsObjectToPhp($result);
     if (isset($arResult["access_token"]) && $arResult["access_token"] != '') {
         $this->access_token = $arResult["access_token"];
         CSocServAuthDB::Update($socServUserId, array("OATOKEN" => $arResult["access_token"]));
         return true;
     }
     return false;
 }
 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;
 }
Beispiel #7
0
 public function getNewAccessToken($refreshToken, $userId = 0, $save = false)
 {
     if ($this->appID == false || $this->appSecret == false) {
         return false;
     }
     $httpClient = new \Bitrix\Main\Web\HttpClient();
     $result = $httpClient->post(static::TOKEN_URL, array("refresh_token" => $refreshToken, "client_id" => $this->appID, "client_secret" => $this->appSecret, "grant_type" => "refresh_token"));
     $arResult = \Bitrix\Main\Web\Json::decode($result);
     if (isset($arResult["access_token"]) && $arResult["access_token"] != '') {
         $this->access_token = $arResult["access_token"];
         $this->accessTokenExpires = $arResult["expires_in"];
         if ($save && intval($userId) > 0) {
             $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => intval($userId), "EXTERNAL_AUTH_ID" => static::SERVICE_ID), false, false, array("ID"));
             if ($arOauth = $dbSocservUser->Fetch()) {
                 CSocServAuthDB::Update($arOauth["ID"], array("OATOKEN" => $this->access_token, "OATOKEN_EXPIRES" => time() + $this->accessTokenExpires));
             }
         }
         return true;
     }
     return false;
 }
Beispiel #8
0
 protected function deleteStorageTokens()
 {
     global $USER;
     if (is_object($USER) && $USER->IsAuthorized()) {
         $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $USER->GetID(), "EXTERNAL_AUTH_ID" => static::SERVICE_ID), false, false, array("ID"));
         while ($accessToken = $dbSocservUser->Fetch()) {
             CSocServAuthDB::Delete($accessToken['ID']);
         }
     }
 }
Beispiel #9
0
 private function GetUserPerms($userXmlId)
 {
     $arUserPermis = array();
     $dbSocUser = CSocServAuthDB::GetList(array(), array('EXTERNAL_AUTH_ID' => 'Twitter', 'XML_ID' => $userXmlId), false, false, array("PERMISSIONS"));
     while ($arSocUser = $dbSocUser->Fetch()) {
         $arUserPermis = unserialize($arSocUser["PERMISSIONS"]);
         if (is_array($arUserPermis)) {
             foreach ($arUserPermis as $key => $value) {
                 if ($value == "UA") {
                     $arUserPermis[$key] = "G2";
                 }
             }
         }
     }
     if (!empty($arUserPermis)) {
         return $arUserPermis;
     } else {
         return array("UA" => array("UA"));
     }
 }
Beispiel #10
0
	CWebDavExtLinks::GetExtLink($arParams, $o);
}

if(!empty($_REQUEST['editInGoogle']))
{
	CUtil::JSPostUnescape();
	CWebDavExtLinks::CheckSessID();
	CWebDavExtLinks::CheckRights($ob);

	CModule::IncludeModule('socialservices');
	$socGoogleOAuth = new CSocServGoogleOAuth();
	$googleOAuth = CUtil::JSEscape($socGoogleOAuth->GetFormHtml(array('GET_URL' => true)));

	$oAuthManager = new CSocServAuthManager();
	$arServices = $oAuthManager->GetActiveAuthServices(array());//check active google oauth service
	$dbSocservUser = CSocServAuthDB::GetList(array(), array('EXTERNAL_AUTH_ID' => 'GoogleOAuth', 'USER_ID' => $USER->GetId()));
	$row = $dbSocservUser->Fetch();
	if(!$row || empty($row['OATOKEN']))
	{
		$APPLICATION->RestartBuffer();
		echo <<<HTML
<script type="text/javascript">
	window.location.href = "{$googleOAuth}";
</script>
HTML;
	}
	else
	{
		//todo drive edit
		//require_once $_SERVER['DOCUMENT_ROOT'].'/'.BX_ROOT.'/modules/drive/worker.php';
		$appID = trim(CSocServGoogleOAuth::GetOption("google_appid"));
Beispiel #11
0
 public function AuthorizeUser($arFields)
 {
     global $USER, $APPLICATION;
     if (!isset($arFields['XML_ID']) || $arFields['XML_ID'] == '') {
         return false;
     }
     if (!isset($arFields['EXTERNAL_AUTH_ID']) || $arFields['EXTERNAL_AUTH_ID'] == '') {
         return false;
     }
     $arOAuthKeys = array();
     if (isset($arFields["OATOKEN"])) {
         $arOAuthKeys["OATOKEN"] = $arFields["OATOKEN"];
     }
     if (isset($arFields["REFRESH_TOKEN"]) && $arFields["REFRESH_TOKEN"] !== '') {
         $arOAuthKeys["REFRESH_TOKEN"] = $arFields["REFRESH_TOKEN"];
     }
     if (isset($arFields["OATOKEN_EXPIRES"])) {
         $arOAuthKeys["OATOKEN_EXPIRES"] = $arFields["OATOKEN_EXPIRES"];
     }
     $errorCode = SOCSERV_AUTHORISATION_ERROR;
     $dbSocUser = CSocServAuthDB::GetList(array(), array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => $arFields['EXTERNAL_AUTH_ID']), false, false, array("ID", "USER_ID", "ACTIVE"));
     $arUser = $dbSocUser->Fetch();
     if ($USER->IsAuthorized()) {
         if (!self::isSplitDenied()) {
             if (!$arUser) {
                 $id = CSocServAuthDB::Add($arFields);
             } else {
                 $id = $arUser['ID'];
                 // socservice link split
                 if ($arUser['USER_ID'] != $USER->GetID()) {
                     $dbRes = CSocServAuthDB::GetList(array(), array('USER_ID' => $USER->GetID(), 'EXTERNAL_AUTH_ID' => $arFields['EXTERNAL_AUTH_ID']), false, false, array("ID"));
                     if ($dbRes->Fetch()) {
                         return SOCSERV_AUTHORISATION_ERROR;
                     } else {
                         $arOAuthKeys['USER_ID'] = $USER->GetID();
                         $arOAuthKeys['CAN_DELETE'] = 'Y';
                     }
                 }
             }
             if ($_SESSION["OAUTH_DATA"] && is_array($_SESSION["OAUTH_DATA"])) {
                 $arOAuthKeys = array_merge($arOAuthKeys, $_SESSION['OAUTH_DATA']);
                 unset($_SESSION["OAUTH_DATA"]);
             }
             CSocServAuthDB::Update($id, $arOAuthKeys);
         } else {
             return SOCSERV_REGISTRATION_DENY;
         }
     } else {
         $entryId = 0;
         $USER_ID = 0;
         if ($arUser) {
             $entryId = $arUser['ID'];
             if ($arUser["ACTIVE"] === 'Y') {
                 $USER_ID = $arUser["USER_ID"];
             }
         } else {
             // check for user with old socialservices linking system (socservice ID in user's EXTERNAL_AUTH_ID)
             $dbUsersOld = CUser::GetList($by = 'ID', $ord = 'ASC', array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => $arFields['EXTERNAL_AUTH_ID'], 'ACTIVE' => 'Y'), array('NAV_PARAMS' => array("nTopCount" => "1")));
             $arUser = $dbUsersOld->Fetch();
             if ($arUser) {
                 $USER_ID = $arUser["ID"];
             } else {
                 // theoretically possible situation with abandoned external user w/o b_socialservices_user entry
                 $dbUsersNew = CUser::GetList($by = 'ID', $ord = 'ASC', array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => 'socservices', 'ACTIVE' => 'Y'), array('NAV_PARAMS' => array("nTopCount" => "1")));
                 $arUser = $dbUsersNew->Fetch();
                 if ($arUser) {
                     $USER_ID = $arUser["ID"];
                 } elseif (COption::GetOptionString("main", "new_user_registration", "N") == "Y" && COption::GetOptionString("socialservices", "allow_registration", "Y") == "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);
                     }
                     if (!empty($arFields['GROUP_ID']) && self::isAuthDenied($arFields['GROUP_ID'])) {
                         $errorCode = SOCSERV_REGISTRATION_DENY;
                     } else {
                         $arFieldsUser = $arFields;
                         $arFieldsUser["EXTERNAL_AUTH_ID"] = "socservices";
                         if (isset($arFieldsUser['PERSONAL_PHOTO']) && is_array($arFieldsUser['PERSONAL_PHOTO'])) {
                             $res = CFile::CheckImageFile($arFieldsUser["PERSONAL_PHOTO"]);
                             if ($res != '') {
                                 unset($arFieldsUser['PERSONAL_PHOTO']);
                             }
                         }
                         $USER_ID = $USER->Add($arFieldsUser);
                         if ($USER_ID <= 0) {
                             $errorCode = SOCSERV_AUTHORISATION_ERROR;
                         }
                     }
                 } elseif (COption::GetOptionString("main", "new_user_registration", "N") == "N") {
                     $errorCode = SOCSERV_REGISTRATION_DENY;
                 }
                 $arFields['CAN_DELETE'] = 'N';
             }
         }
         if (isset($_SESSION["OAUTH_DATA"]) && is_array($_SESSION["OAUTH_DATA"])) {
             foreach ($_SESSION['OAUTH_DATA'] as $key => $value) {
                 $arFields[$key] = $value;
             }
             unset($_SESSION["OAUTH_DATA"]);
         }
         if ($USER_ID > 0) {
             $arGroups = $USER->GetUserGroup($USER_ID);
             if (self::isAuthDenied($arGroups)) {
                 return SOCSERV_AUTHORISATION_ERROR;
             }
             if ($entryId > 0) {
                 CSocServAuthDB::Update($entryId, $arFields);
             } else {
                 $arFields['USER_ID'] = $USER_ID;
                 CSocServAuthDB::Add($arFields);
             }
             $USER->AuthorizeWithOtp($USER_ID);
         } else {
             return $errorCode;
         }
         // possible redirect after authorization, so no spreading. Store cookies in the session for next hit
         $APPLICATION->StoreCookies();
     }
     return true;
 }
Beispiel #12
0
	private function saveDataDB()
	{
		$dbSocUser = CSocServAuthDB::GetList(array(), array('XML_ID' => $this->appID, 'PERSONAL_WWW' => $this->portalURI, 'EXTERNAL_AUTH_ID' => "Bitrix24OAuth"), false, false, array("ID"));

		if($GLOBALS["USER"]->IsAuthorized() && $GLOBALS["USER"]->GetID())
		{
			$arFields = array(
				'PERSONAL_WWW' => $this->portalURI,
				'XML_ID' => $this->appID,
				'EXTERNAL_AUTH_ID' => "Bitrix24OAuth",
				'USER_ID' => $GLOBALS["USER"]->GetID(),
				'OATOKEN' => $this->access_token,
				'OATOKEN_EXPIRES' => $this->accessTokenExpires + time(),
				'LOGIN' => $this->appID,
			);

			if($this->refresh_token <> '')
				$arFields['REFRESH_TOKEN'] = $this->refresh_token;

			if($arUser = $dbSocUser->Fetch())
			{
				return CSocServAuthDB::Update($arUser["ID"], $arFields);
			}
			else
			{
				return CSocServAuthDB::Add($arFields);
			}
		}
		return true;
	}
Beispiel #13
0
 public function getNewAccessToken($refreshToken = false, $userId = 0, $save = false, $scope = array())
 {
     if ($this->appID == false || $this->appSecret == false) {
         return false;
     }
     if ($refreshToken == false) {
         $refreshToken = $this->refresh_token;
     }
     $http = new HttpClient(array('socketTimeout' => $this->httpTimeout));
     $result = $http->post(static::TOKEN_URL, array('client_id' => $this->appID, 'client_secret' => $this->appSecret, 'refresh_token' => $refreshToken, 'grant_type' => 'refresh_token'));
     $arResult = Json::decode($result);
     if (isset($arResult["access_token"]) && $arResult["access_token"] != '') {
         $this->access_token = $arResult["access_token"];
         $this->accessTokenExpires = time() + $arResult["expires_in"];
         $this->refresh_token = $arResult["refresh_token"];
         if ($save && intval($userId) > 0) {
             $dbSocservUser = CSocServAuthDB::GetList(array(), array("USER_ID" => intval($userId), "EXTERNAL_AUTH_ID" => CSocServBoxAuth::ID), false, false, array("ID"));
             $arOauth = $dbSocservUser->Fetch();
             if ($arOauth) {
                 CSocServAuthDB::Update($arOauth["ID"], array("OATOKEN" => $this->access_token, "OATOKEN_EXPIRES" => $this->accessTokenExpires, "REFRESH_TOKEN" => $this->refresh_token));
             }
         }
         return true;
     }
     return false;
 }
Beispiel #14
0
 protected function CheckFields($action, &$arFields)
 {
     global $USER;
     if ($action === 'ADD') {
         if (isset($arFields["EXTERNAL_AUTH_ID"]) && strlen($arFields["EXTERNAL_AUTH_ID"]) <= 0) {
             return false;
         }
         if (isset($arFields["SITE_ID"]) && strlen($arFields["SITE_ID"]) <= 0) {
             $arFields["SITE_ID"] = SITE_ID;
         }
         if (!isset($arFields["USER_ID"])) {
             $arFields["USER_ID"] = $USER->GetID();
         }
         $dbCheck = CSocServAuthDB::GetList(array(), array("USER_ID" => $arFields["USER_ID"], "EXTERNAL_AUTH_ID" => $arFields["EXTERNAL_AUTH_ID"]), false, false, array("ID"));
         if ($dbCheck->Fetch()) {
             return false;
         }
     }
     if (is_set($arFields, "PERSONAL_PHOTO")) {
         $res = CFile::CheckImageFile($arFields["PERSONAL_PHOTO"]);
         if (strlen($res) > 0) {
             unset($arFields["PERSONAL_PHOTO"]);
         } else {
             $arFields["PERSONAL_PHOTO"]["MODULE_ID"] = "socialservices";
             CFile::SaveForDB($arFields, "PERSONAL_PHOTO", "socialservices");
         }
     }
     return true;
 }
Beispiel #15
0
 private function getStorageTokens()
 {
     global $USER;
     $accessToken = '';
     if (is_object($USER) && $USER->IsAuthorized()) {
         $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $USER->GetID(), "EXTERNAL_AUTH_ID" => CSocServBitrix24Net::ID), false, false, array("USER_ID", "OATOKEN", "OATOKEN_EXPIRES", "REFRESH_TOKEN"));
         $accessToken = $dbSocservUser->Fetch();
     }
     return $accessToken;
 }
Beispiel #16
0
}
if (is_array($arResult["DB_SOCSERV_USER"])) {
    foreach ($arResult["DB_SOCSERV_USER"] as $key => $value) {
        if ($value["EXTERNAL_AUTH_ID"] == 'Twitter') {
            $arResult["DB_SOCSERV_USER"][$twitNum] = $arResult["DB_SOCSERV_USER"][$key];
            unset($arResult["DB_SOCSERV_USER"][$key]);
            $twitNum++;
        }
    }
}
$arParamsToDelete = array("openid_assoc_handle", "openid_identity", "openid_sreg_email", "openid_sreg_fullname", "openid_sreg_gender", "openid_mode", "openid_op_endpoint", "openid_response_nonce", "openid_return_to", "openid_signed", "openid_sig", "current_fieldset");
$add = CModule::IncludeModule("socialnetwork") && $_REQUEST["auth_service_id"] != '' && $componentTemplate == 'twitpost' ? "current_fieldset=SOCSERV" : "";
if ($_SERVER["REQUEST_METHOD"] == "GET" && $_REQUEST["action"] == "delete" && isset($_REQUEST["user_id"]) && intval($_REQUEST["user_id"] > 0) && check_bitrix_sessid()) {
    $userId = intval($_REQUEST["user_id"]);
    if (in_array($userId, $arResult["ALLOW_DELETE_ID"])) {
        if (!CSocServAuthDB::Delete($userId)) {
            $_SESSION["LAST_ERROR"] = GetMessage("DELETE_ERROR");
        }
    }
    $backurl = '';
    if ($arResult['BACKURL'] != '') {
        $backurl = $arResult['BACKURL'];
        if ($componentTemplate == 'twitpost') {
            $backurl .= (strpos($arResult['BACKURL'], '?') > 0 ? "&" : "?") . "current_fieldset=SOCSERV";
        }
    } else {
        $backurl = $APPLICATION->GetCurPageParam($componentTemplate == 'twitpost' ? "current_fieldset=SOCSERV" : "", array("sessid", "user_id", "action"));
    }
    LocalRedirect($backurl);
}
if ($componentTemplate == 'twitpost') {
Beispiel #17
0
 public function Authorize()
 {
     global $APPLICATION, $USER;
     $errorCode = 1;
     if ($arOpenID = $this->Validate()) {
         $arFields = array('EXTERNAL_AUTH_ID' => 'OPENID#' . $arOpenID['server'], 'XML_ID' => $arOpenID['identity'], 'PASSWORD' => randString(30), 'LID' => SITE_ID, "PERSONAL_WWW" => $arOpenID['identity']);
         if (array_key_exists('openid_sreg_email', $_GET)) {
             $arFields['EMAIL'] = $_GET['openid_sreg_email'];
         }
         if (array_key_exists('openid_sreg_gender', $_GET) && ($_GET['openid_sreg_gender'] == 'M' || $_GET['openid_sreg_gender'] == 'F')) {
             $arFields['PERSONAL_GENDER'] = $_GET['openid_sreg_gender'];
         }
         if (array_key_exists('openid_sreg_fullname', $_GET)) {
             $fullname = defined("BX_UTF") ? $_GET['openid_sreg_fullname'] : CharsetConverter::ConvertCharset($_GET['openid_sreg_fullname'], 'UTF-8', LANG_CHARSET);
             $fullname = trim($fullname);
             if (($pos = strpos($fullname, ' ')) !== false) {
                 $arFields['NAME'] = substr($fullname, 0, $pos);
                 $arFields['LAST_NAME'] = substr($fullname, $pos + 1);
             } else {
                 $arFields['NAME'] = $fullname;
             }
         }
         if (array_key_exists('openid_sreg_postcode', $_GET)) {
             $arFields['PERSONAL_ZIP'] = $_GET['openid_sreg_postcode'];
         }
         if (array_key_exists('openid_sreg_timezone', $_GET)) {
             $arFields['TIME_ZONE'] = $_GET['openid_sreg_timezone'];
         }
         if (array_key_exists('openid_sreg_country', $_GET)) {
             $arFields['PERSONAL_COUNTRY'] = GetCountryIdByCode($_GET['openid_sreg_country']);
         }
         if (array_key_exists('openid_sreg_dob', $_GET)) {
             $arFields['PERSONAL_BIRTHDAY'] = CDatabase::FormatDate($_GET['openid_sreg_dob'], "YYYY-MM-DD", FORMAT_DATE);
         }
         if (array_key_exists('BX_OPENID_IDENTITY', $_SESSION)) {
             $arFields['LOGIN'] = $_SESSION['BX_OPENID_IDENTITY'];
         } else {
             $arFields['LOGIN'] = $arOpenID['identity'];
         }
         $arFields['LOGIN'] = preg_replace("#^(http://|https://)#i", "", $arFields['LOGIN']);
         $USER_ID = 0;
         if ($GLOBALS["USER"]->IsAuthorized() && $GLOBALS["USER"]->GetID()) {
             if (!CSocServAuth::isSplitDenied()) {
                 $arFields['USER_ID'] = $GLOBALS["USER"]->GetID();
                 CSocServAuthDB::Add($arFields);
                 self::CleanParam();
             } else {
                 $errorCode = SOCSERV_REGISTRATION_DENY;
             }
         } else {
             $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")));
             $dbSocUser = CSocServAuthDB::GetList(array(), array('XML_ID' => $arFields['XML_ID'], 'EXTERNAL_AUTH_ID' => $arFields['EXTERNAL_AUTH_ID']), false, false, array("USER_ID", "ACTIVE"));
             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") {
                 $def_group = COption::GetOptionString('main', 'new_user_registration_def_group', '');
                 if ($def_group != '') {
                     $arFields['GROUP_ID'] = explode(',', $def_group);
                 }
                 if (!empty($arFields['GROUP_ID']) && CSocServAuth::isAuthDenied($arFields['GROUP_ID'])) {
                     $errorCode = SOCSERV_REGISTRATION_DENY;
                 } else {
                     foreach (GetModuleEvents("main", "OnBeforeOpenIDUserAdd", true) as $arEvent) {
                         ExecuteModuleEventEx($arEvent, array($arFields));
                     }
                     $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;
                     CSocServAuthDB::Add($arFields);
                     unset($arFields['CAN_DELETE']);
                 }
             } elseif (COption::GetOptionString("main", "new_user_registration", "N") == "N") {
                 $errorCode = 2;
             }
             if (intval($USER_ID) > 0) {
                 $arGroups = $USER->GetUserGroup($USER_ID);
                 if (CSocServAuth::isAuthDenied($arGroups)) {
                     $errorCode = SOCSERV_AUTHORISATION_ERROR;
                 } else {
                     $USER->AuthorizeWithOtp($USER_ID);
                     $arKillParams = array("auth_service_id", "check_key");
                     foreach (array_keys($_GET) as $k) {
                         if (strpos($k, 'openid_') === 0) {
                             $arKillParams[] = $k;
                         }
                     }
                     $redirect_url = $APPLICATION->GetCurPageParam('', $arKillParams, false);
                     foreach (GetModuleEvents("main", "OnBeforeOpenIDAuthFinalRedirect", true) as $arEvent) {
                         ExecuteModuleEventEx($arEvent, array($redirect_url, $USER_ID, $arFields));
                     }
                     if ($redirect_url) {
                         LocalRedirect($redirect_url, true);
                     }
                     return $USER_ID;
                 }
             }
         }
     }
     $arKillParams = array("check_key");
     foreach (array_keys($_GET) as $k) {
         if (strpos($k, 'openid') === 0) {
             $arKillParams[] = $k;
         }
     }
     $redirect_url = $APPLICATION->GetCurPageParam('auth_service_error=' . $errorCode, $arKillParams, false);
     LocalRedirect($redirect_url, true);
     return false;
 }
Beispiel #18
0
	private function getStorageTokens()
	{
		global $USER;

		$accessToken = '';
		if(is_object($USER))
		{
			$dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $USER->GetID(), "EXTERNAL_AUTH_ID" => CSocServYandexAuth::ID), false, false, array("OATOKEN", "REFRESH_TOKEN"));
			if($arOauth = $dbSocservUser->Fetch())
			{
				$accessToken = $arOauth["OATOKEN"];
			}
		}
		return $accessToken;
	}
Beispiel #19
0
 private function SetOauthKeys($socServUserId)
 {
     $dbSocservUser = CSocServAuthDB::GetList(array(), array('ID' => $socServUserId), false, false, array("OATOKEN", "XML_ID"));
     while ($arOauth = $dbSocservUser->Fetch()) {
         $this->access_token = $arOauth["OATOKEN"];
         $this->userId = $arOauth["XML_ID"];
     }
     if (!$this->access_token || !$this->userId) {
         return false;
     }
     return true;
 }
Beispiel #20
0
                $arResult["USER_PERSONAL_PHOTO_SRC"] = $arFileTmp["src"];
            }
        }
        if (defined("BX_COMP_MANAGED_CACHE")) {
            $CACHE_MANAGER->RegisterTag("USER_CARD_" . intval($user_id / TAGGED_user_card_size));
            $CACHE_MANAGER->EndTagCache();
        }
    }
    if ($obCache->StartDataCache()) {
        $obCache->EndDataCache($arResult["USER_PERSONAL_PHOTO_SRC"]);
    }
}
// add chache here!!!
if (IsModuleInstalled('bitrix24') && COption::GetOptionString('bitrix24', 'network', 'N') == 'Y' && CModule::IncludeModule('socialservices')) {
    // also check for B24Net turned on in module settings
    $dbSocservUser = CSocServAuthDB::GetList(array(), array('USER_ID' => $user_id, "EXTERNAL_AUTH_ID" => CSocServBitrix24Net::ID), false, false, array("PERSONAL_WWW"));
    $arSocservUser = $dbSocservUser->Fetch();
    if ($arSocservUser) {
        $arResult['B24NET_WWW'] = $arSocservUser['PERSONAL_WWW'];
    }
}
//B24 helper
if (!function_exists("__getVideoStepByUrl")) {
    function __getVideoStepByUrl($videoSteps, $url)
    {
        $result = $url == "/" ? $videoSteps[0]["id"] : "other";
        foreach ($videoSteps as $step) {
            foreach ($step["patterns"] as $pattern) {
                //echo $pattern."<br>";
                if (preg_match($pattern, $url)) {
                    $result = $step["id"];