HmacAuthenticationListener   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
dl 0
loc 61
ccs 17
cts 17
cp 1
rs 10
c 1
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 18 3
A __construct() 0 5 1
1
<?php
2
3
namespace Acquia\Hmac\Symfony;
4
5
use Symfony\Component\HttpKernel\Event\RequestEvent;
6
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
7
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
8
use Symfony\Component\Security\Core\Exception\AuthenticationException;
9
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
10
11
/**
12
 * Handles an authentication event.
13
 */
14
class HmacAuthenticationListener
15
{
16
    /**
17
     * @var \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface
18
     *   Stores a security token for authentication.
19
     */
20
    protected $tokenStorage;
21
22
    /**
23
     * @var \Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface
24
     *   Manages the available authentication providers.
25
     */
26
    protected $authManager;
27
28
    /**
29
     * @var \Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface
30
     *   Response handling for a client making an unauthenticated request.
31
     */
32
    protected $entryPoint;
33
34
    /**
35
     * Initializes the authentication listener.
36
     *
37
     * @param \Symfony\Component\Security\Csrf\TokenStorage\TokenStorageInterface $tokenStorage
38
     *   Storage for a security token during authentication.
39
     * @param \Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface $authManager
40
     *   An authentication provider manager.
41
     * @param \Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface $entryPoint
42
     *   An entry point for unauthenticated client requests.
43
     */
44
    public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authManager, AuthenticationEntryPointInterface $entryPoint)
45 3
    {
46
        $this->tokenStorage = $tokenStorage;
47 3
        $this->authManager = $authManager;
48 3
        $this->entryPoint = $entryPoint;
49 3
    }
50 3
51
    /**
52
     * Handles the incoming request.
53
     *
54
     * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event
55 3
     *   The event corresponding to the request.
56
     */
57 3
    public function __invoke(RequestEvent $event)
58
    {
59
        $request = $event->getRequest();
60 3
61 1
        // Requests require an Authorization header.
62 1
        if (!$request->headers->has('Authorization')) {
63
            $event->setResponse($this->entryPoint->start($request));
64
            return;
65 2
        }
66
67
        $token = new HmacToken($request);
68 2
69 1
        try {
70 1
            $authToken = $this->authManager->authenticate($token);
71 1
            $this->tokenStorage->setToken($authToken);
72 1
            $request->attributes->set('hmac.key', $authToken->getCredentials());
0 ignored issues
show
Deprecated Code introduced by
The function Symfony\Component\Securi...rface::getCredentials() has been deprecated: since Symfony 5.4 ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

72
            $request->attributes->set('hmac.key', /** @scrutinizer ignore-deprecated */ $authToken->getCredentials());

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
73
        } catch (AuthenticationException $e) {
74 2
            $event->setResponse($this->entryPoint->start($request, $e));
75
        }
76
    }
77
}
78