Logout.php 1.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
<?php
/**
 * gredu_labs
 * 
 * @link https://github.com/eellak/gredu_labs for the canonical source repository
 * @copyright Copyright (c) 2008-2015 Greek Free/Open Source Software Society (https://gfoss.ellak.gr/)
 * @license GNU GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
 */

namespace GrEduLabs\Action\User;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Authentication\AuthenticationServiceInterface;

class Logout
{
    /**
     * @var AuthenticationServiceInterface
     */
    protected $authService;

    /**
     * @var string
     */
    protected $redirectUrl;

    public function __construct(
        AuthenticationServiceInterface $authService,
        $redirectUrl
    ) {
        $this->authService = $authService;
        $this->redirectUrl = $redirectUrl;
    }

    public function __invoke(ServerRequestInterface $req, ResponseInterface $res, array $args = [])
    {
        if ($this->authService->hasIdentity()) {
            $this->authService->clearIdentity();
        }

        return $res->withRedirect($this->redirectUrl);
    }
}