Passed
Push — master ( 5679ef...aad9e9 )
by Kirill
04:11
created

AbstractFirewall   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 6
c 1
b 0
f 0
dl 0
loc 34
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A grantAccess() 0 3 1
A process() 0 10 3
1
<?php
2
3
/**
4
 * Spiral Framework.
5
 *
6
 * @license   MIT
7
 * @author    Anton Titov (Wolfy-J)
8
 */
9
10
declare(strict_types=1);
11
12
namespace Spiral\Auth\Middleware\Firewall;
13
14
use Psr\Http\Message\ResponseInterface as Response;
15
use Psr\Http\Message\ServerRequestInterface as Request;
16
use Psr\Http\Server\MiddlewareInterface;
17
use Psr\Http\Server\RequestHandlerInterface;
18
use Spiral\Auth\AuthContextInterface;
19
use Spiral\Auth\Middleware\AuthMiddleware;
20
21
/**
22
 * Apply deny filter if user is not authenticated.
23
 */
24
abstract class AbstractFirewall implements MiddlewareInterface
25
{
26
    /**
27
     * @param Request                 $request
28
     * @param RequestHandlerInterface $handler
29
     * @return Response
30
     */
31
    public function process(Request $request, RequestHandlerInterface $handler): Response
32
    {
33
        /** @var AuthContextInterface $context */
34
        $authContext = $request->getAttribute(AuthMiddleware::ATTRIBUTE);
35
36
        if ($authContext === null || $authContext->getActor() === null) {
37
            return $this->denyAccess($request, $handler);
38
        }
39
40
        return $this->grantAccess($request, $handler);
41
    }
42
43
    /**
44
     * @param Request                 $request
45
     * @param RequestHandlerInterface $handler
46
     * @return Response
47
     */
48
    abstract protected function denyAccess(Request $request, RequestHandlerInterface $handler): Response;
49
50
    /**
51
     * @param Request                 $request
52
     * @param RequestHandlerInterface $handler
53
     * @return Response
54
     */
55
    protected function grantAccess(Request $request, RequestHandlerInterface $handler): Response
56
    {
57
        return $handler->handle($request);
58
    }
59
}
60