. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Authentication\Oidc; use Espo\Core\Authentication\AuthToken\AuthToken; use Espo\Core\Authentication\Logout as LogoutInterface; use Espo\Core\Authentication\Logout\Params; use Espo\Core\Authentication\Logout\Result; /** * @noinspection PhpUnused */ class Logout implements LogoutInterface { public function __construct( private ConfigDataProvider $configDataProvider ) {} public function logout(AuthToken $authToken, Params $params): Result { $url = $this->configDataProvider->getLogoutUrl(); $clientId = $this->configDataProvider->getClientId() ?? ''; $siteUrl = $this->configDataProvider->getSiteUrl(); if ($url) { $url = str_replace('{clientId}', urlencode($clientId), $url); $url = str_replace('{siteUrl}', urlencode($siteUrl), $url); } // @todo Check session is set in auth token to bypass fallback logins. return Result::create()->withRedirectUrl($url); } }