Factory   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 7
dl 0
loc 32
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createDefaultCSRFCheckerMiddleware() 0 13 1
A createDefaultTokenGenerator() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PSR7Csrf;
6
7
use Lcobucci\JWT\Parser;
8
use Lcobucci\JWT\Signer\Hmac\Sha256;
9
use Psr\Http\Message\ResponseInterface;
10
use PSR7Csrf\HttpMethod\IsSafeHttpRequest;
11
use PSR7Csrf\RequestParameter\ExtractCSRFParameter;
12
use PSR7Csrf\Session\ExtractUniqueKeyFromSession;
13
use PSR7Sessions\Storageless\Http\SessionMiddleware;
14
15
final class Factory
16
{
17
    public const DEFAULT_SIGNATURE_KEY_NAME = 'csrf_signature_key';
18
19
    public const DEFAULT_CSRF_DATA_KEY = 'csrf_token';
20 1
21
    public const DEFAULT_EXPIRATION_TIME = 60 * 24;
22 1
23 1
    public static function createDefaultCSRFCheckerMiddleware(
24 1
        ResponseInterface $failedCsrfValidationResponse
25 1
    ) : CSRFCheckerMiddleware {
26 1
        return new CSRFCheckerMiddleware(
27 1
            IsSafeHttpRequest::fromDefaultSafeMethods(),
28 1
            new ExtractUniqueKeyFromSession(self::DEFAULT_SIGNATURE_KEY_NAME),
29
            new ExtractCSRFParameter(self::DEFAULT_CSRF_DATA_KEY),
30
            new Parser(),
31
            new Sha256(),
32 1
            SessionMiddleware::SESSION_ATTRIBUTE,
33
            $failedCsrfValidationResponse
34 1
        );
35 1
    }
36 1
37 1
    public static function createDefaultTokenGenerator() : TokenGeneratorInterface
38 1
    {
39
        return new TokenGenerator(
40
            new Sha256(),
41
            new ExtractUniqueKeyFromSession(self::DEFAULT_SIGNATURE_KEY_NAME),
42
            self::DEFAULT_EXPIRATION_TIME,
43
            SessionMiddleware::SESSION_ATTRIBUTE
44
        );
45
    }
46
}
47