Current Path : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/rest/lib/oauth/ |
Current File : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/rest/lib/oauth/provider.php |
<?php namespace Bitrix\Rest\OAuth; use Bitrix\Rest\AuthProviderInterface; use Bitrix\Rest\Event\Session; use Bitrix\Rest\OAuthService; use Bitrix\Main\Type\DateTime; class Provider implements AuthProviderInterface { /** * @var Provider */ protected static $instance = null; public static function instance() { if(static::$instance === null) { static::$instance = new static(); } return static::$instance; } public function authorizeClient($clientId, $userId, $state = '') { if($userId > 0) { $additionalParams = $this->getTokenParams(array(), $userId); $client = $this->getClient(); $codeInfo = $client->getCode($clientId, $state, $additionalParams); if($codeInfo['result']) { return $codeInfo['result']; } else { return $codeInfo; } } return false; } public function get($clientId, $scope, $additionalParams, $userId) { if($userId > 0) { $additionalParams = $this->getTokenParams($additionalParams, $userId); $client = $this->getClient(); $authResult = $client->getAuth($clientId, $scope, $additionalParams); if($authResult['result']) { if($authResult['result']['access_token']) { $authResult['result']['user_id'] = $userId; $authResult['result']['client_id'] = $clientId; Auth::storeRegisteredAuth($authResult['result']); } if (!empty($authResult['result']['date_finish_format'])) { $dateFinish = new DateTime($authResult['result']['date_finish_format'], DATE_ATOM); $authResult['result']['date_finish'] = $dateFinish->getTimestamp(); } return $authResult['result']; } else { return $authResult; } } return false; } protected function getClient() { return OAuthService::getEngine()->getClient(); } protected function getTokenParams($additionalParams, $userId) { if(!is_array($additionalParams)) { $additionalParams = array(); } $additionalParams[Auth::PARAM_LOCAL_USER] = $userId; $additionalParams[Auth::PARAM_TZ_OFFSET] = \CTimeZone::getOffset(); $additionalParams[Session::PARAM_SESSION] = Session::get(); return $additionalParams; } }