mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 11:08:45 +02:00
N°3169 - Add feature to connect Gsuite mail box with OAuth
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 (wip)
This commit is contained in:
26
sources/Controller/OAuth/OAuthAjaxController.php
Normal file
26
sources/Controller/OAuth/OAuthAjaxController.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@@ -8,25 +8,25 @@ namespace Combodo\iTop\Controller\OAuth;
|
||||
|
||||
use Combodo\iTop\Application\TwigBase\Controller\Controller;
|
||||
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderAbstract;
|
||||
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientResultDisplayConf;
|
||||
use Dict;
|
||||
use utils;
|
||||
|
||||
class OAuthWizardController extends Controller
|
||||
{
|
||||
public function WizardOperation()
|
||||
public function OperationWizard()
|
||||
{
|
||||
$aParams = [];
|
||||
|
||||
$aParams['sReturnUri'] = OAuthClientProviderAbstract::GetRedirectUri();
|
||||
$aParams['sAjaxUri'] = utils::GetAbsoluteUrlAppRoot().'pages/oauth/ajax.wizard.php';
|
||||
|
||||
|
||||
$aParams['sAjaxUri'] = utils::GetAbsoluteUrlAppRoot().'pages/ajax.oauth.wizard.php';
|
||||
//$this->AddLinkedScript(utils::GetAbsoluteUrlAppRoot().'/js/pages/backoffice/oauth.wizard.js');
|
||||
|
||||
$aOAuthClasses = [
|
||||
'Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderAzure',
|
||||
'Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderGoogle',
|
||||
];
|
||||
|
||||
foreach ($aOAuthClasses as $sOAuthClass) {
|
||||
$aParams['aProviders'][] = [
|
||||
'name' => $sOAuthClass::GetVendorName(),
|
||||
@@ -43,6 +43,10 @@ class OAuthWizardController extends Controller
|
||||
'redirect_uri' => ['type' => 'text', 'label' => Dict::S('UI:OAuth:Wizard:Form:Input:RedirectUri:Label'), 'read_only' => true, 'value' => OAuthClientProviderAbstract::GetRedirectUri()],
|
||||
];
|
||||
|
||||
$aParams['aAdditionalBlocks'] = [
|
||||
OAuthClientResultDisplayConf::GetResultDisplayTemplate(),
|
||||
];
|
||||
|
||||
$this->DisplayPage($aParams);
|
||||
}
|
||||
}
|
||||
@@ -5,4 +5,7 @@ use League\OAuth2\Client\Token\AccessToken;
|
||||
interface IOAuthClientResultDisplay{
|
||||
public static function GetResultDisplayBlock();
|
||||
public static function GetResultDisplayScript($sClientId, $sClientSecret, $sVendor, AccessToken $oAccessToken);
|
||||
|
||||
public static function GetResultDisplayTemplate();
|
||||
//public static function GetResultDisplayParams($sClientId, $sClientSecret, $sVendor, AccessToken $oAccessToken);
|
||||
}
|
||||
@@ -105,7 +105,7 @@ EOF;
|
||||
*/
|
||||
public static function InitizalizeRedirectUri()
|
||||
{
|
||||
static::$sRedirectUri = utils::GetAbsoluteUrlAppRoot().'pages/oauth/landing.php';
|
||||
static::$sRedirectUri = utils::GetAbsoluteUrlAppRoot().'pages/oauth.landing.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,4 +37,9 @@ $('#ibo-oauth-wizard--conf--result').text($sConf);
|
||||
JS;
|
||||
|
||||
}
|
||||
|
||||
public static function GetResultDisplayTemplate()
|
||||
{
|
||||
return 'DisplayConfig.html.twig';
|
||||
}
|
||||
}
|
||||
@@ -24,8 +24,10 @@ class TwigHelper
|
||||
Extension::RegisterTwigExtensions($oTwig);
|
||||
$sLocalPath = utils::LocalPath($sViewPath);
|
||||
$sLocalPath = str_replace('env-'.utils::GetCurrentEnvironment(), 'twig', $sLocalPath);
|
||||
$sCachePath = utils::GetCachePath().$sLocalPath;
|
||||
$oTwig->setCache($sCachePath);
|
||||
if (!utils::IsDevelopmentEnvironment()) {
|
||||
$sCachePath = utils::GetCachePath().$sLocalPath;
|
||||
$oTwig->setCache($sCachePath);
|
||||
}
|
||||
|
||||
return $oTwig;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user