RespondWithHeaderToken   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 1
dl 0
loc 44
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __invoke() 0 6 1
1
<?php
2
3
namespace Schnittstabil\Psr7\Csrf\Middlewares;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Psr\Http\Message\ResponseInterface;
7
8
/**
9
 * Middleware for sending CSRF tokens by response headers.
10
 */
11
class RespondWithHeaderToken
12
{
13
    /**
14
     * Used to generate tokens.
15
     *
16
     * @var callable
17
     */
18
    protected $tokenGenerator;
19
20
    /**
21
     * Header field name.
22
     *
23
     * @var string
24
     */
25
    protected $headerName;
26
27
    /**
28
     * Create new RespondWithHeaderToken middleware.
29
     *
30
     * @param callable $tokenGenerator Used to generate tokens
31
     * @param string   $headerName     Header field name
32
     */
33
    public function __construct(callable $tokenGenerator, $headerName = 'XSRF-TOKEN')
34
    {
35
        $this->tokenGenerator = $tokenGenerator;
36
        $this->headerName = $headerName;
37
    }
38
39
    /**
40
     * Invoke middleware.
41
     *
42
     * @param ServerRequestInterface $request  request object
43
     * @param ResponseInterface      $response response object
44
     * @param callable               $next     next middleware
45
     *
46
     * @return ResponseInterface response object
47
     */
48
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
49
    {
50
        $token = call_user_func($this->tokenGenerator);
51
52
        return $next($request, $response->withHeader($this->headerName, $token));
53
    }
54
}
55