mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°5395 - Errors from OAuth servers for email are not well handled
This commit is contained in:
@@ -21,6 +21,7 @@ Dict::Add('EN US', 'English', 'English', [
|
||||
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Access token created',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated',
|
||||
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error',
|
||||
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client',
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ Dict::Add('FR FR', 'French', 'Français', [
|
||||
'itop-oauth-client:Message:MissingToken' => 'Générez le jeton d\'accès avant d\'utiliser ce client OAuth',
|
||||
'itop-oauth-client:Message:TokenCreated' => 'Le jeton d\'accès à été créé',
|
||||
'itop-oauth-client:Message:TokenRecreated' => 'Le jeton d\'accès à été renouvelé',
|
||||
'itop-oauth-client:Message:TokenError' => 'Le jeton d\'accès n\'a pas été généré à cause d`une erreur serveur',
|
||||
|
||||
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'La combinaison Login (%1$s) and Utilisé pour SMTP (%2$s) a déjà été utilisée pour OAuth Client',
|
||||
|
||||
|
||||
@@ -49,26 +49,66 @@ class AjaxOauthClientController extends Controller
|
||||
|
||||
$sRedirectUrl = utils::ReadParam('redirect_url', '', false, 'raw');
|
||||
|
||||
$sRedirectUrlQuery = parse_url($sRedirectUrl)['query'];
|
||||
$aResult = [];
|
||||
$aResult['status'] = 'error';
|
||||
$aURL = parse_url($sRedirectUrl);
|
||||
if (isset($aURL['query'])) {
|
||||
$sRedirectUrlQuery = $aURL['query'];
|
||||
$aQuery = [];
|
||||
parse_str($sRedirectUrlQuery, $aQuery);
|
||||
if (isset($aQuery['error'])) {
|
||||
$aResult['status'] = 'error';
|
||||
if (isset($aQuery['error_description'])) {
|
||||
$aResult['error_description'] = $aQuery['error_description'];
|
||||
}
|
||||
}
|
||||
if (isset($aQuery['code'])) {
|
||||
$sCode = $aQuery['code'];
|
||||
$oAccessToken = OAuthClientProviderFactory::GetAccessTokenFromCode($oOAuthClient, $sCode);
|
||||
|
||||
$aQuery = [];
|
||||
parse_str($sRedirectUrlQuery, $aQuery);
|
||||
$sCode = $aQuery['code'];
|
||||
$oAccessToken = OAuthClientProviderFactory::GetAccessTokenFromCode($oOAuthClient, $sCode);
|
||||
$oOAuthClient->SetAccessToken($oAccessToken);
|
||||
|
||||
$oOAuthClient->SetAccessToken($oAccessToken);
|
||||
|
||||
cmdbAbstractObject::SetSessionMessage(
|
||||
$sClass,
|
||||
$sId,
|
||||
"$sClass:$sId:TokenCreated",
|
||||
$bIsCreation ? Dict::S('itop-oauth-client:Message:TokenCreated') : Dict::S('itop-oauth-client:Message:TokenRecreated'),
|
||||
'ok',
|
||||
1,
|
||||
true
|
||||
);
|
||||
|
||||
$aResult = ['status' => 'success'];
|
||||
$aResult['status'] = 'success';
|
||||
}
|
||||
} else {
|
||||
$aResult['status'] = 'error';
|
||||
$aResult['error_description'] = 'Redirect URL Format not recognized';
|
||||
}
|
||||
|
||||
switch ($aResult['status']) {
|
||||
case 'success':
|
||||
cmdbAbstractObject::SetSessionMessage(
|
||||
$sClass,
|
||||
$sId,
|
||||
"$sClass:$sId:TokenCreated",
|
||||
$bIsCreation ? Dict::S('itop-oauth-client:Message:TokenCreated') : Dict::S('itop-oauth-client:Message:TokenRecreated'),
|
||||
'ok',
|
||||
1,
|
||||
true
|
||||
);
|
||||
if ($bIsCreation) {
|
||||
IssueLog::Info("Token created for $sClass:$sId");
|
||||
} else {
|
||||
IssueLog::Info("Token recreated for $sClass:$sId");
|
||||
}
|
||||
break;
|
||||
|
||||
case 'error':
|
||||
cmdbAbstractObject::SetSessionMessage(
|
||||
$sClass,
|
||||
$sId,
|
||||
"$sClass:$sId:TokenError",
|
||||
$aResult['error_description'] ?? Dict::S('itop-oauth-client:Message:TokenError'),
|
||||
'error',
|
||||
1,
|
||||
true
|
||||
);
|
||||
IssueLog::Error("Token creation failed for $sClass:$sId", null, $aResult);
|
||||
break;
|
||||
}
|
||||
|
||||
$aResult['data'] = utils::GetAbsoluteUrlAppRoot()."pages/UI.php?operation=details&class=$sClass&id=$sId";
|
||||
|
||||
$this->DisplayJSONPage($aResult);
|
||||
|
||||
@@ -8,6 +8,6 @@ class OAuthLandingController extends Controller
|
||||
{
|
||||
public function OperationLanding()
|
||||
{
|
||||
$this->DisplayPage([]);
|
||||
$this->DisplayAjaxPage([]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user