Lines 0.00% 0 / 11
Methods 0.00% 0 / 3
Classes 0.00% 0 / 1
Name Lines Methods CRAP
 __construct 0.00% 0 / 3 0.00% 0 / 1 2
 __invoke 0.00% 0 / 5 0.00% 0 / 1 2
 getSessionContainer 0.00% 0 / 3 0.00% 0 / 1 2
9class SessionMiddleware
10{
11    const string SESSION_ATTRIBUTE = 'session';
12
13    protected string $sessionName;
14
15    protected ?object $sessionClass = null;
16
17    /** @psalm-api Instantiated by Slim middleware registration. */
18    public function __construct(string $name = 'default', ?object $sessionClass = null)
19    {
20        session_name($name);
21        $this->sessionName = $name;
22        $this->sessionClass = $sessionClass;
23    }
24
25    public function __invoke(
26        ServerRequestInterface $requestInterface,
27        RequestHandlerInterface $next
28    ): ResponseInterface {
29        $sessionContainer = Session\SessionHuman::fromContainer(function () use ($requestInterface) {
30            return $this->getSessionContainer($requestInterface);
31        });
32
33        $requestInterface = $requestInterface->withAttribute(self::SESSION_ATTRIBUTE, $sessionContainer);
34        return $next->handle($requestInterface);
35    }
36
37    public function getSessionContainer(ServerRequestInterface $request): Session\SessionData
38    {
39        $session = Session\SessionData::getSession($request);
40        $session->setEntityClass($this->sessionClass);
41        return $session;
42    }
43}