LastGridPage::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Admin\Http\Middleware;
6
7
use AbterPhp\Framework\Constant\Session;
8
use AbterPhp\Framework\Helper\Url;
9
use Closure;
10
use Opulence\Http\Requests\Request;
11
use Opulence\Http\Responses\Response;
12
use Opulence\Routing\Middleware\IMiddleware;
13
use Opulence\Sessions\ISession;
14
15
class LastGridPage implements IMiddleware
16
{
17
    protected ISession $session;
18
19
    /**
20
     * LastGridPage constructor.
21
     *
22
     * @param ISession $session
23
     */
24
    public function __construct(ISession $session)
25
    {
26
        $this->session = $session;
27
    }
28
29
    /**
30
     * @param Request $request
31
     * @param Closure $next
32
     *
33
     * @return Response
34
     */
35
    public function handle(Request $request, Closure $next): Response
36
    {
37
        /** @var Response $response */
38
        $response = $next($request);
39
40
        if ($response->getStatusCode() >= 400 || !$this->session->has(Session::USER_ID)) {
41
            return $response;
42
        }
43
44
        $path = sprintf(
45
            '%s%s',
46
            $request->getPath(),
47
            Url::toQuery($request->getQuery()->getAll())
48
        );
49
50
        $this->session->set(Session::LAST_GRID_URL, $path);
51
52
        return $response;
53
    }
54
}
55