mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth * 2.7 migration
62 lines
2.6 KiB
PHP
62 lines
2.6 KiB
PHP
<?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);
|
|
}
|
|
} |