gmarche/src/Auth/Action/LogoutAction.php

59 lines
1.5 KiB
PHP

<?php
namespace App\Auth\Action;
use App\Auth\DatabaseAuth;
use Framework\Renderer\RendererInterface;
use Framework\Response\RedirectResponse;
use Framework\Session\FlashService;
use Framework\Session\SessionInterface;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ServerRequestInterface;
/**
* Class LogoutAction
* @package App\Auth\Action
*/
class LogoutAction
{
/**
* @var RendererInterface
*/
private $renderer;
/**
* @var DatabaseAuth
*/
private $auth;
/**
* @var FlashService
*/
private $flashService;
private $container;
public function __construct(RendererInterface $renderer, DatabaseAuth $auth, FlashService $flashService
, ContainerInterface $container, SessionInterface $session)
{
$this->renderer = $renderer;
$this->auth = $auth;
$this->flashService = $flashService;
$this->container = $container;
$this->session = $session;
}
public function __invoke(ServerRequestInterface $request)
{
$gmarchePrefix = $this->container->get('gmarche.prefix');
if(!isset($_SESSION)) {
//session_start();
}
unset($_SESSION['user']);
if ($this->session->get('username')) {
$this->session->delete('username');
}
$this->auth->logout();
$this->flashService->success('Vous êtes maintenant déconnecté');
return new RedirectResponse("$gmarchePrefix");
}
}