Passed
Push — master ( 1b1def...6e81bd )
by Dominik
04:37
created

anonymous//src/CsrfProvider.php$0   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 10
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 10
c 0
b 0
f 0
wmc 1
lcom 0
cbo 1
ccs 2
cts 2
cp 1
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chubbyphp\Csrf;
6
7
use Pimple\Container;
8
use Pimple\ServiceProviderInterface;
9
use Psr\Http\Message\ServerRequestInterface as Request;
10
use Psr\Http\Message\ResponseInterface as Response;
11
12
final class CsrfProvider implements ServiceProviderInterface
13
{
14
    /**
15
     * @param Container $container
16
     */
17 1
    public function register(Container $container)
18
    {
19 1
        $container['csrf.tokenGenerator.entropy'] = 256;
20
21
        $container['csrf.tokenGenerator'] = function () use ($container) {
22 1
            return new CsrfTokenGenerator($container['csrf.tokenGenerator.entropy']);
23
        };
24
25
        $container['csrf.errorResponseHandler'] = new class() implements CsrfErrorHandlerInterface {
26 1
            public function errorResponse(
27
                Request $request,
28
                Response $response,
29
                int $code,
30
                string $reasonPhrase
31
            ): Response {
32 1
                return $response->withStatus($code, $reasonPhrase);
33
            }
34
        };
35
36 1
        $container['csrf.middleware'] = function () use ($container) {
37 1
            return new CsrfErrorResponseMiddleware(
38 1
                $container['csrf.tokenGenerator'],
39 1
                $container['session'],
40 1
                $container['csrf.errorResponseHandler'],
41 1
                $container['logger'] ?? null
42
            );
43
        };
44 1
    }
45
}
46