ExtractUniqueKeyFromSession::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
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