. */ namespace SP\Modules\Web\Controllers\Login; use SP\Core\Context\ContextBase; use SP\Core\Context\SessionUtil; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Modules\Web\Controllers\ControllerBase; /** * Class LoginController * * @package SP\Modules\Web\Controllers */ final class LogoutController extends ControllerBase { /** * Logout action */ public function logoutAction(): void { if ($this->session->isLoggedIn() === true) { $inactiveTime = abs(round((time() - $this->session->getLastActivity()) / 60, 2)); $totalTime = abs(round((time() - $this->session->getStartActivity()) / 60, 2)); $this->eventDispatcher->notify( 'logout', new Event( $this, EventMessage::factory() ->addDescription(__u('Logout session')) ->addDetail(__u('User'), $this->session->getUserData()->getLogin()) ->addDetail(__u('Inactive time'), $inactiveTime.' min.') ->addDetail(__u('Total time'), $totalTime.' min.') ) ); SessionUtil::cleanSession(); $this->session->setAppStatus(ContextBase::APP_STATUS_LOGGEDOUT); $this->layoutHelper->getCustomLayout('logout', 'logout'); $this->view(); } else { $this->router->response()->redirect('index.php?r=login'); } } }