Added: Password change plugin API improvements (#910)

This commit is contained in:
RainLoop Team 2015-12-15 07:02:30 +03:00
parent b97bd4edf0
commit cfad4bb005
11 changed files with 107 additions and 18 deletions

View file

@ -12,8 +12,8 @@ class Actions
const AUTH_MAILTO_TOKEN_KEY = 'rlmailtoauth';
const AUTH_SPEC_TOKEN_KEY = 'rlspecauth';
const AUTH_SPEC_LOGOUT_TOKEN_KEY = 'rlspeclogout';
const AUTH_SPEC_LOGOUT_CUSTOM_MSG_KEY = 'rlspeclogoutcmk';
const AUTH_ADMIN_TOKEN_KEY = 'rlaauth';
const AUTH_LAST_ERROR = 'rllasterrorcode';
/**
* @var \MailSo\Base\Http
@ -644,6 +644,28 @@ class Actions
return $sResult;
}
/**
* @return string
*/
public function GetSpecLogoutCustomMgsWithDeletion()
{
$sResult = \RainLoop\Utils::GetCookie(self::AUTH_SPEC_LOGOUT_CUSTOM_MSG_KEY, '');
if (0 < strlen($sResult))
{
\RainLoop\Utils::ClearCookie(self::AUTH_SPEC_LOGOUT_CUSTOM_MSG_KEY);
}
return $sResult;
}
/**
* @return string
*/
public function SetSpecLogoutCustomMgsWithDeletion($sMessage)
{
\RainLoop\Utils::SetCookie(self::AUTH_SPEC_LOGOUT_CUSTOM_MSG_KEY, $sMessage, 0);
}
/**
* @return void
*/
@ -1597,6 +1619,11 @@ class Actions
$aResult['WelcomePageDisplay'] = '';
$aResult['StartupUrl'] = '';
if (empty($aResult['AdditionalLoginError']))
{
$aResult['AdditionalLoginError'] = $this->GetSpecLogoutCustomMgsWithDeletion();
}
}
$aResult['AllowGoogleSocial'] = (bool) $oConfig->Get('social', 'google_enable', false);

View file

@ -9,17 +9,29 @@ namespace RainLoop\Exceptions;
class ClientException extends Exception
{
/**
*
* @var boolen
*/
private $bLogoutOnException;
/**
* @var string
*/
private $sAdditionalMessage;
public function __construct($iCode, $oPrevious = null, $sAdditionalMessage = '')
/**
* @param int $iCode
* @param \Exception $oPrevious = null
* @param string $sAdditionalMessage = ''
* @param boolean $bLogoutOnException = false
*/
public function __construct($iCode, $oPrevious = null, $sAdditionalMessage = '', $bLogoutOnException = false)
{
parent::__construct(\RainLoop\Notifications::GetNotificationsMessage($iCode, $oPrevious),
$iCode, $oPrevious);
$this->sAdditionalMessage = $sAdditionalMessage;
$this->setLogoutOnException($bLogoutOnException);
}
/**
@ -29,4 +41,27 @@ class ClientException extends Exception
{
return $this->sAdditionalMessage;
}
/**
* @return boolen
*/
public function getLogoutOnException()
{
return $this->bLogoutOnException;
}
/**
* @param boolean $bLogoutOnException
* @param string $sAdditionalLogoutMessage = ''
*
* @return ClientException
*/
public function setLogoutOnException($bLogoutOnException, $sAdditionalLogoutMessage = '')
{
$this->bLogoutOnException = !!$bLogoutOnException;
$this->sAdditionalMessage = $sAdditionalLogoutMessage;
return $this;
}
}

View file

@ -192,14 +192,14 @@ class Service
}
$sResult .= '<!--';
$sResult .= ' [version:'.APP_VERSION;
$sResult .= ' [time:'.\substr(\microtime(true) - APP_START, 0, 6);
// $sResult .= '][version:'.APP_VERSION;
if ($this->oActions->IsOpen())
{
$sResult .= '][AGPLv3';
}
$sResult .= '][time:'.\substr(\microtime(true) - APP_START, 0, 6);
$sResult .= '][cached:'.($bCached ? 'true' : 'false');
// $sResult .= '][hash:'.$aTemplateParameters['{{BaseHash}}'];
// $sResult .= '][session:'.\md5(\RainLoop\Utils::GetShortToken());

View file

@ -182,9 +182,21 @@ class ServiceActions
$aResponseItem = $this->oActions->ExceptionResponse(
empty($sAction) ? 'Unknown' : $sAction, $oException);
if (\is_array($aResponseItem) && 'Folders' === $sAction && $oException instanceof \RainLoop\Exceptions\ClientException)
if (\is_array($aResponseItem) && $oException instanceof \RainLoop\Exceptions\ClientException)
{
$aResponseItem['ClearAuth'] = true;
if ('Folders' === $sAction)
{
$aResponseItem['ClearAuth'] = true;
}
if ($oException->getLogoutOnException())
{
$aResponseItem['Logout'] = true;
if ($oException->getAdditionalMessage())
{
$this->oActions->SetSpecLogoutCustomMgsWithDeletion($oException->getAdditionalMessage());
}
}
}
}
@ -1008,7 +1020,7 @@ class ServiceActions
public function ServiceExternalLogin()
{
$this->oHttp->ServerNoCache();
$oException = null;
$oAccount = null;
$bLogout = true;