101 lines
3.0 KiB
PHP
101 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace strategies;
|
|
|
|
use oauth2\OAuth2Protocol;
|
|
use oauth2\OAuth2Message;
|
|
use oauth2\services\IApiScopeService;
|
|
use oauth2\services\IClientService;
|
|
use oauth2\services\IMementoOAuth2SerializerService;
|
|
use utils\services\IAuthService;
|
|
use oauth2\factories\OAuth2AuthorizationRequestFactory;
|
|
use Redirect;
|
|
use View;
|
|
use Response;
|
|
use URL;
|
|
|
|
|
|
/**
|
|
* Class OAuth2ConsentStrategy
|
|
* @package strategies
|
|
*/
|
|
class OAuth2ConsentStrategy implements IConsentStrategy
|
|
{
|
|
/**
|
|
* @var IAuthService
|
|
*/
|
|
private $auth_service;
|
|
/**
|
|
* @var IMementoOAuth2SerializerService
|
|
*/
|
|
private $memento_service;
|
|
/**
|
|
* @var IApiScopeService
|
|
*/
|
|
private $scope_service;
|
|
/**
|
|
* @var IClientService
|
|
*/
|
|
private $client_service;
|
|
|
|
/**
|
|
* @param IAuthService $auth_service
|
|
* @param IMementoOAuth2SerializerService $memento_service
|
|
* @param IApiScopeService $scope_service
|
|
* @param IClientService $client_service
|
|
*/
|
|
public function __construct
|
|
(
|
|
IAuthService $auth_service,
|
|
IMementoOAuth2SerializerService $memento_service,
|
|
IApiScopeService $scope_service,
|
|
IClientService $client_service
|
|
)
|
|
{
|
|
$this->auth_service = $auth_service;
|
|
$this->memento_service = $memento_service;
|
|
$this->scope_service = $scope_service;
|
|
$this->client_service = $client_service;
|
|
}
|
|
|
|
public function getConsent()
|
|
{
|
|
$auth_request = OAuth2AuthorizationRequestFactory::getInstance()->build
|
|
(
|
|
OAuth2Message::buildFromMemento
|
|
(
|
|
$this->memento_service->load()
|
|
)
|
|
);
|
|
|
|
$client_id = $auth_request->getClientId();
|
|
$client = $this->client_service->getClientById($client_id);
|
|
$scopes = explode(' ',$auth_request->getScope());
|
|
$requested_scopes = $this->scope_service->getScopesByName($scopes);
|
|
|
|
$data = array();
|
|
$data['requested_scopes'] = $requested_scopes;
|
|
$data['app_name'] = $client->getApplicationName();
|
|
$data['redirect_to'] = $auth_request->getRedirectUri();
|
|
$data['website'] = $client->getWebsite();
|
|
$data['tos_uri'] = $client->getTermOfServiceUri();
|
|
$data['policy_uri'] = $client->getPolicyUri();
|
|
|
|
$app_logo = $client->getApplicationLogo();
|
|
|
|
$data['app_logo'] = $app_logo;
|
|
$data['app_description'] = $client->getApplicationDescription();
|
|
$data['dev_info_email'] = $client->getDeveloperEmail();
|
|
|
|
$response_strategy = DisplayResponseStrategyFactory::build($auth_request->getDisplay());
|
|
|
|
return $response_strategy->getConsentResponse($data);
|
|
|
|
}
|
|
|
|
public function postConsent($trust_action)
|
|
{
|
|
$this->auth_service->setUserAuthorizationResponse($trust_action);
|
|
return Redirect::action('OAuth2ProviderController@authorize');
|
|
}
|
|
} |