Completed
Push — master ( 332a47...cbc99e )
by WEBEWEB
03:08
created

KernelEventListener::setRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 4
rs 10
c 1
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
/**
4
 * This file is part of the bootstrap-bundle package.
5
 *
6
 * (c) 2018 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Bundle\BootstrapBundle\EventListener;
13
14
use Symfony\Component\HttpFoundation\Request;
15
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
16
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
17
use Symfony\Component\Security\Core\User\UserInterface;
18
use WBW\Bundle\BootstrapBundle\Manager\ProvidersManager;
19
20
/**
21
 * Kernel event listener.
22
 *
23
 * @author webeweb <https://github.com/webeweb/>
24
 * @package WBW\Bundle\BootstrapBundle\EventListener
25
 */
26
class KernelEventListener {
27
28
    /**
29
     * Service name.
30
     *
31
     * @var string
32
     */
33
    const SERVICE_NAME = "webeweb.bundle.bootstrapbundle.eventlistener.kernel";
34
35
    /**
36
     * Providers manager.
37
     *
38
     * @var ProvidersManager
39
     */
40
    private $providersManager;
41
42
    /**
43
     * Request.
44
     *
45
     * @var Request
46
     */
47
    private static $request;
48
49
    /**
50
     * Token storage.
51
     *
52
     * @var TokenStorageInterface
53
     */
54
    private $tokenStorage;
55
56
    /**
57
     * User.
58
     *
59
     * @var UserInterface
60
     */
61
    private $user;
62
63
    /**
64
     * Constructor.
65
     *
66
     * @param TokenStorageInterface $tokenStorage The token storage service.
67
     * @param ProvidersManager $providersManager The providers manager service.
68
     */
69
    public function __construct(TokenStorageInterface $tokenStorage, ProvidersManager $providersManager) {
70
        $this->setProvidersManager($providersManager);
71
        $this->setTokenStorage($tokenStorage);
72
    }
73
74
    /**
75
     * Get the providers manager.
76
     *
77
     * @return ProvidersManager Returns the providers manager.
78
     */
79
    public function getProvidersManager() {
80
        return $this->providersManager;
81
    }
82
83
    /**
84
     * Get the request.
85
     *
86
     * @return Request Returns the request.
87
     */
88
    public function getRequest() {
89
        return self::$request;
90
    }
91
92
    /**
93
     * Get the token storage.
94
     *
95
     * @return TokenStorageInterface Returns the token storage.
96
     */
97
    public function getTokenStorage() {
98
        return $this->tokenStorage;
99
    }
100
101
    /**
102
     * Get the current user.
103
     *
104
     * @return UserInterface Returns the current user in case of success, null otherwise.
105
     */
106
    public function getUser() {
107
        if (null === $this->user) {
108
            $token = $this->getTokenStorage()->getToken();
109
            if (null !== $token) {
110
                $this->user = $token->getUser();
111
            }
112
        }
113
        if (true === ($this->user instanceof UserInterface)) {
114
            return $this->user;
115
        }
116
        return null;
117
    }
118
119
    /**
120
     * On kernel request.
121
     *
122
     * @param GetResponseEvent $event The event.
123
     * @return void
124
     */
125
    public function onKernelRequest(GetResponseEvent $event) {
126
127
        // Initialize the request.
128
        $this->setRequest($event->getRequest());
129
130
        // Register the providers.
131
        $this->getProvidersManager()->register();
132
    }
133
134
    /**
135
     * Set the providers manager.
136
     *
137
     * @param ProvidersManager $providersManager The providers manager.
138
     * @return KernelEventListener Returns this kernel event listener.
139
     */
140
    protected function setProvidersManager(ProvidersManager $providersManager) {
141
        $this->providersManager = $providersManager;
142
        return $this;
143
    }
144
145
    /**
146
     * Set the request.
147
     *
148
     * @param Request $request The request.
149
     * @return KernelEventListener Returns this kernel event listener.
150
     */
151
    protected function setRequest(Request $request) {
0 ignored issues
show
Bug introduced by
You have injected the Request via parameter $request. This is generally not recommended as there might be multiple instances during a request cycle (f.e. when using sub-requests). Instead, it is recommended to inject the RequestStack and retrieve the current request each time you need it via getCurrentRequest().
Loading history...
152
        self::$request = $request;
153
        return $this;
154
    }
155
156
    /**
157
     * Set the token storage.
158
     *
159
     * @param TokenStorageInterface $tokenStorage The token storage.
160
     * @return KernelEventListener Returns this kernel event listener.
161
     */
162
    protected function setTokenStorage(TokenStorageInterface $tokenStorage) {
163
        $this->tokenStorage = $tokenStorage;
164
        return $this;
165
    }
166
167
}
168