anonymous//src/CsrfProvider.php$0   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 10
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

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