SecurityProvider   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 26
c 0
b 0
f 0
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A __invoke() 0 14 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DH\AuditorBundle\Security;
6
7
use DH\Auditor\Security\SecurityProviderInterface;
8
use Symfony\Bundle\SecurityBundle\Security\FirewallConfig;
9
use Symfony\Bundle\SecurityBundle\Security\FirewallMap;
10
use Symfony\Component\HttpFoundation\RequestStack;
11
12
class SecurityProvider implements SecurityProviderInterface
13
{
14
    private RequestStack $requestStack;
15
16
    private FirewallMap $firewallMap;
17
18
    public function __construct(RequestStack $requestStack, FirewallMap $firewallMap)
19
    {
20
        $this->requestStack = $requestStack;
21
        $this->firewallMap = $firewallMap;
22
    }
23
24
    public function __invoke(): array
25
    {
26
        $clientIp = null;
27
        $firewallName = null;
28
29
        $request = $this->requestStack->getCurrentRequest();
30
        if (null !== $request) {
31
            $firewallConfig = $this->firewallMap->getFirewallConfig($request);
32
33
            $clientIp = $request->getClientIp();
34
            $firewallName = $firewallConfig instanceof FirewallConfig ? $firewallConfig->getName() : null;
35
        }
36
37
        return [$clientIp, $firewallName];
38
    }
39
}
40