Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
SessionMiddleware
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 __invoke
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
6
 getSessionContainer
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace BO\Slim\Middleware;
4
5use Psr\Http\Message\ServerRequestInterface;
6use Psr\Http\Message\ResponseInterface;
7use Psr\Http\Server\RequestHandlerInterface;
8use BO\Slim\Factory\ResponseFactory;
9
10class SessionMiddleware
11{
12    const SESSION_ATTRIBUTE = 'session';
13
14    protected $sessionClass = null;
15
16    public function __construct($name = 'default', $sessionClass = null)
17    {
18        session_name($name);
19        $this->sessionName = $name;
20        $this->sessionClass = $sessionClass;
21    }
22
23    public function __invoke(
24        ServerRequestInterface $requestInterface,
25        RequestHandlerInterface $next
26    ) {
27        $sessionContainer = Session\SessionHuman::fromContainer(function () use ($requestInterface) {
28            return $this->getSessionContainer($requestInterface);
29        });
30
31        if (null !== $next) {
32            $requestInterface = $requestInterface->withAttribute(self::SESSION_ATTRIBUTE, $sessionContainer);
33            $response = $next->handle($requestInterface);
34        } else {
35            $response = (new ResponseFactory())->createResponse();
36        }
37
38        return $response;
39    }
40
41    public function getSessionContainer($request)
42    {
43        $session = Session\SessionData::getSession($request);
44        $session->setEntityClass($this->sessionClass);
45        return $session;
46    }
47}