* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PsAccounts\Provider\OAuth2; trait PrestaShopLogoutTrait { /** * @return ShopProvider */ abstract protected function getProvider(); /** * @return PrestaShopSession */ abstract protected function getOauth2Session(); /** * @return bool */ abstract protected function isOauth2LogoutEnabled(); /** * @return void * * @throws \Exception */ public function oauth2Logout() { if (!$this->isOauth2LogoutEnabled()) { return; } $oauth2Session = $this->getOauth2Session(); if (!isset($_GET[ShopProvider::QUERY_LOGOUT_CALLBACK_PARAM])) { $idToken = $oauth2Session->getIdToken(); if (empty($idToken)) { return; } $logoutUrl = $this->getProvider()->getLogoutUrl([ 'id_token_hint' => $idToken, ]); header('Location: ' . $logoutUrl); exit; } else { $oauth2Session->clear(); } } }