mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 02:28:44 +02:00
Feature/merge 3 0 develop (#298)
* merging 3.0 into develop * N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth * migration to iTop 3.1 Co-authored-by: Eric Espie <eric.espie@combodo.com>
This commit is contained in:
62
sources/Controller/OAuth/OAuthAjaxController.php
Normal file
62
sources/Controller/OAuth/OAuthAjaxController.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace Combodo\iTop\Controller\OAuth;
|
||||
|
||||
use Combodo\iTop\Application\TwigBase\Controller\Controller;
|
||||
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
|
||||
use utils;
|
||||
|
||||
class OAuthAjaxController extends Controller
|
||||
{
|
||||
public function OperationGetAuthorizationUrl()
|
||||
{
|
||||
$aResult = ['status' => 'success', 'data' => []];
|
||||
$sProvider = utils::ReadParam('provider', '', false, 'raw');
|
||||
$sClientId = utils::ReadParam('client_id', '', false, 'raw');
|
||||
$sClientSecret = utils::ReadParam('client_secret', '', false, 'raw');
|
||||
$sScope = utils::ReadParam('scope', '', false, 'raw');
|
||||
$sAdditional = utils::ReadParam('additional', '', false, 'raw');
|
||||
$aAdditional = [];
|
||||
parse_str($sAdditional, $aAdditional);
|
||||
$sAuthorizationUrl = OAuthClientProviderFactory::getVendorProviderForAccessUrl($sProvider, $sClientId, $sClientSecret, $sScope, $aAdditional);
|
||||
$aResult['data']['authorization_url'] = $sAuthorizationUrl;
|
||||
|
||||
$this->DisplayJSONPage($aResult);
|
||||
}
|
||||
|
||||
public function OperationGetDisplayAuthenticationResults()
|
||||
{
|
||||
$aResult = ['status' => 'success', 'data' => []];
|
||||
$sProvider = utils::ReadParam('provider', '', false, 'raw');
|
||||
$sRedirectUrl = utils::ReadParam('redirect_url', '', false, 'raw');
|
||||
$sClientId = utils::ReadParam('client_id', '', false, 'raw');
|
||||
$sClientSecret = utils::ReadParam('client_secret', '', false, 'raw');
|
||||
$sScope = utils::ReadParam('scope', '', false, 'raw');
|
||||
$sAdditional = utils::ReadParam('additional', '', false, 'raw');
|
||||
|
||||
$sRedirectUrlQuery = parse_url($sRedirectUrl)['query'];
|
||||
|
||||
$aOAuthResultDisplayClasses[] = '\Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientResultDisplayConf';
|
||||
if (class_exists('Combodo\iTop\Extension\Service\OAuthClientResultDisplayMailbox')) {
|
||||
$aOAuthResultDisplayClasses[] = 'Combodo\iTop\Extension\Service\OAuthClientResultDisplayMailbox';
|
||||
}
|
||||
|
||||
$aAdditional = [];
|
||||
parse_str($sAdditional, $aAdditional);
|
||||
|
||||
// $sProviderClass = "\Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProvider".$sProvider;
|
||||
// $sRedirectUrl = OAuthClientProviderAbstract::GetRedirectUri();
|
||||
|
||||
$aQuery = [];
|
||||
parse_str($sRedirectUrlQuery, $aQuery);
|
||||
$sCode = $aQuery['code'];
|
||||
$oProvider = OAuthClientProviderFactory::getVendorProvider($sProvider, $sClientId, $sClientSecret, $sScope, $aAdditional);
|
||||
$oAccessToken = OAuthClientProviderFactory::getAccessTokenFromCode($oProvider, $sCode);
|
||||
|
||||
foreach ($aOAuthResultDisplayClasses as $sOAuthClass) {
|
||||
$aResult['data'][] = $sOAuthClass::GetResultDisplayScript($sClientId, $sClientSecret, $sProvider, $oAccessToken);
|
||||
}
|
||||
|
||||
$this->DisplayJSONPage($aResult);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user