X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FSecurity%2FLogout.php;h=528dd295e7592eaa6834de89149cbd5b0114d103;hb=99284222c1d7fb4adca9077e3057faf3b36f7180;hp=062d55687b4f81a82d6dea0e478b81f218a6f9bd;hpb=aa5771cf3e170e1a335d4f3b770693033493be99;p=friendica.git diff --git a/src/Module/Security/Logout.php b/src/Module/Security/Logout.php index 062d55687b..528dd295e7 100644 --- a/src/Module/Security/Logout.php +++ b/src/Module/Security/Logout.php @@ -1,45 +1,88 @@ . + * */ namespace Friendica\Module\Security; +use Friendica\App; use Friendica\BaseModule; -use Friendica\App\Authentication; -use Friendica\Core\Cache; +use Friendica\Core\Cache\Capability\ICanCache; use Friendica\Core\Hook; use Friendica\Core\L10n; -use Friendica\Core\Session; +use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\System; +use Friendica\DI; use Friendica\Model\Profile; +use Friendica\Model\User\Cookie; +use Friendica\Module\Response; +use Friendica\Util\Profiler; +use Psr\Log\LoggerInterface; /** * Logout module - * - * @author Hypolite Petovan */ class Logout extends BaseModule { + /** @var ICanCache */ + protected $cache; + /** @var Cookie */ + protected $cookie; + /** @var IHandleUserSessions */ + protected $session; + + public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, ICanCache $cache, Cookie $cookie, IHandleUserSessions $session, array $server, array $parameters = []) + { + parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); + + $this->cache = $cache; + $this->cookie = $cookie; + $this->session = $session; + } + + /** - * @brief Process logout requests + * Process logout requests */ - public static function init(array $parameters = []) + protected function rawContent(array $request = []) { $visitor_home = null; - if (remote_user()) { + if ($this->session->getRemoteUserId()) { $visitor_home = Profile::getMyURL(); - Cache::delete('zrlInit:' . $visitor_home); + $this->cache->delete('zrlInit:' . $visitor_home); } Hook::callAll("logging_out"); - Session::clear(); + + // If this is a trusted browser, redirect to the 2fa signout page + if ($this->cookie->get('2fa_cookie_hash')) { + $this->baseUrl->redirect('2fa/signout'); + } + + $this->cookie->clear(); + $this->session->clear(); if ($visitor_home) { System::externalRedirect($visitor_home); } else { - info(L10n::t('Logged out.')); - self::getApp()->internalRedirect(); + DI::sysmsg()->addInfo($this->t('Logged out.')); + $this->baseUrl->redirect(); } } }