ExtractUniqueKeyFromSession::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
nc 2
nop 1
dl 0
loc 14
ccs 7
cts 7
cp 1
crap 3
rs 9.7998
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PSR7Csrf\Session;
6
7
use PSR7Sessions\Storageless\Session\SessionInterface;
8
9
final class ExtractUniqueKeyFromSession implements ExtractUniqueKeyFromSessionInterface
10
{
11
    const ENTROPY = 32;
12
13
    /**
14
     * @var string
15
     */
16
    private $uniqueIdKey;
17
18
    public function __construct(string $uniqueIdKey)
19 12
    {
20
        $this->uniqueIdKey = $uniqueIdKey;
21 12
    }
22 12
23
    public function __invoke(SessionInterface $session) : string
24 12
    {
25
        $uniqueKey = $session->get($this->uniqueIdKey, '');
26 12
27
        if ('' === $uniqueKey || ! is_string($uniqueKey)) {
28 12
            $generatedKey = bin2hex(random_bytes(self::ENTROPY));
29 8
30
            $session->set($this->uniqueIdKey, $generatedKey);
31 8
32
            return $generatedKey;
33 8
        }
34
35
        return $uniqueKey;
36 4
    }
37
}
38