Passed
Pull Request — develop (#301)
by Michiel
09:43 queued 05:05
created

ProxyStateHandler::unsetVerifiedBySsoOn2faCookie()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * Copyright 2014 SURFnet bv
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
0 ignored issues
show
Coding Style introduced by
PHP version not specified
Loading history...
Coding Style introduced by
Missing @category tag in file comment
Loading history...
Coding Style introduced by
Missing @package tag in file comment
Loading history...
Coding Style introduced by
Missing @author tag in file comment
Loading history...
Coding Style introduced by
Missing @license tag in file comment
Loading history...
Coding Style introduced by
Missing @link tag in file comment
Loading history...
18
19
namespace Surfnet\StepupGateway\GatewayBundle\Saml\Proxy;
20
21
use Surfnet\StepupGateway\GatewayBundle\Saml\Exception\RuntimeException;
22
use Symfony\Component\HttpFoundation\Session\SessionInterface;
23
24
class ProxyStateHandler
0 ignored issues
show
Coding Style introduced by
Missing doc comment for class ProxyStateHandler
Loading history...
25
{
26
    private $sessionPath;
0 ignored issues
show
Coding Style introduced by
Private member variable "sessionPath" must be prefixed with an underscore
Loading history...
27
28
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
29
     * @var \Symfony\Component\HttpFoundation\Session\SessionInterface
30
     */
31
    private $session;
0 ignored issues
show
Coding Style introduced by
Private member variable "session" must be prefixed with an underscore
Loading history...
32
33
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
Coding Style introduced by
Parameter $sessionPath should have a doc-comment as per coding-style.
Loading history...
34
     * @param SessionInterface $session
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
35
     */
36
    public function __construct(SessionInterface $session, $sessionPath)
37
    {
38
        $this->sessionPath = $sessionPath;
39
        $this->session = $session;
40
    }
41
42
    /**
43
     * Clear the complete state, leaving other states intact.
44
     */
0 ignored issues
show
Coding Style introduced by
Missing @return tag in function comment
Loading history...
45
    public function clear()
46
    {
47
        $all = $this->session->all();
48
49
        foreach (array_keys($all) as $key) {
50
            if (strpos($key, $this->sessionPath) === 0) {
51
                $this->session->remove($key);
52
            }
53
        }
54
    }
55
56
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
57
     * @param string $originalRequestId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
58
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
59
     */
60
    public function setRequestId($originalRequestId)
61
    {
62
        $this->set('request_id', $originalRequestId);
63
64
        return $this;
65
    }
66
67
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
68
     * @return string|null
69
     */
70
    public function getRequestId()
71
    {
72
        return $this->get('request_id');
73
    }
74
75
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
76
     * @param string $serviceProvider
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
77
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
78
     */
79
    public function setRequestServiceProvider($serviceProvider)
80
    {
81
        $this->set('service_provider', $serviceProvider);
82
83
        return $this;
84
    }
85
86
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
87
     * @return string|null
88
     */
89
    public function getRequestServiceProvider()
90
    {
91
        return $this->get('service_provider');
92
    }
93
94
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
95
     * @param string $url
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
96
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
97
     */
98
    public function setRequestAssertionConsumerServiceUrl($url)
99
    {
100
        $this->set('assertion_consumer_service_url', $url);
101
102
        return $this;
103
    }
104
105
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
106
     * @return string|null
107
     */
108
    public function getRequestAssertionConsumerServiceUrl()
109
    {
110
        return $this->get('assertion_consumer_service_url');
111
    }
112
113
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
114
     * @param string $relayState
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
115
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
116
     */
117
    public function setRelayState($relayState)
118
    {
119
        $this->set('relay_state', $relayState);
120
121
        return $this;
122
    }
123
124
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
125
     * @return string|null
126
     */
127
    public function getRelayState()
128
    {
129
        return $this->get('relay_state');
130
    }
131
132
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
133
     * @param string $loaIdentifier
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
134
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
135
     */
136
    public function setRequiredLoaIdentifier($loaIdentifier)
137
    {
138
        $this->set('loa_identifier', $loaIdentifier);
139
140
        return $this;
141
    }
142
143
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
144
     * @return string|null
145
     */
146
    public function getRequiredLoaIdentifier()
147
    {
148
        return $this->get('loa_identifier');
149
    }
150
151
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
152
     * @param string $requestId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
153
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
154
     */
155
    public function setGatewayRequestId($requestId)
156
    {
157
        $this->set('gateway_request_id', $requestId);
158
159
        return $this;
160
    }
161
162
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
163
     * @return string|null
164
     */
165
    public function getGatewayRequestId()
166
    {
167
        return $this->get('gateway_request_id');
168
    }
169
170
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
171
     * @param string $assertionAsXmlString
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
172
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
173
     */
174
    public function saveAssertion($assertionAsXmlString)
175
    {
176
        $this->set('response_assertion', $assertionAsXmlString);
177
178
        return $this;
179
    }
180
181
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
182
     * @return null|string
183
     */
184
    public function getAssertion()
185
    {
186
        return $this->get('response_assertion');
187
    }
188
189
    public function saveIdentityNameId(string $nameId)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function saveIdentityNameId()
Loading history...
190
    {
191
        $this->set('name_id', $nameId);
192
193
        return $this;
194
    }
195
196
    public function getIdentityNameId(): string
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getIdentityNameId()
Loading history...
197
    {
198
        $nameId = $this->get('name_id');
199
        if (!$nameId) {
200
            throw new RuntimeException('Unable to retrieve NameId, it was not set on the state handler');
201
        }
202
203
        if (!is_string($nameId)) {
204
            throw new RuntimeException(
205
                sprintf('Unable to retrieve NameId, must be a string, but a %s was set', gettype($nameId))
206
            );
207
        }
208
        return $nameId;
209
    }
210
211
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
212
     * @param string $idpEntityId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
213
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
214
     */
215
    public function setAuthenticatingIdp($idpEntityId)
216
    {
217
        $this->set('authenticating_idp', $idpEntityId);
218
219
        return $this;
220
    }
221
222
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
223
     * @return null|string
224
     */
225
    public function getAuthenticatingIdp()
226
    {
227
        return $this->get('authenticating_idp');
228
    }
229
230
    public function setSelectedSecondFactorId(string $secondFactorId)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function setSelectedSecondFactorId()
Loading history...
231
    {
232
        $this->set('selected_second_factor', $secondFactorId);
233
234
        return $this;
235
    }
236
237
    public function unsetSelectedSecondFactorId(): void
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function unsetSelectedSecondFactorId()
Loading history...
238
    {
239
        $this->set('selected_second_factor', null);
240
    }
241
242
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
243
     * @return null|string
244
     */
245
    public function getSelectedSecondFactorId()
246
    {
247
        return $this->get('selected_second_factor');
248
    }
249
250
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
251
     * @param bool $verified
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
252
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
253
     */
254
    public function setSecondFactorVerified($verified)
255
    {
256
        $this->set('selected_second_factor_verified', $verified);
257
258
        return $this;
259
    }
260
261
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
262
     * @return bool
263
     */
264
    public function isSecondFactorVerified()
265
    {
266
        return $this->get('selected_second_factor_verified') === true;
267
    }
268
269
    public function setVerifiedBySsoOn2faCookie(bool $isVerifiedByCookie): self
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function setVerifiedBySsoOn2faCookie()
Loading history...
270
    {
271
        $this->set('verified_by_sso_on_2fa_cookie', $isVerifiedByCookie);
272
273
        return $this;
274
    }
275
276
    public function unsetVerifiedBySsoOn2faCookie(): void
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function unsetVerifiedBySsoOn2faCookie()
Loading history...
277
    {
278
        $this->set('verified_by_sso_on_2fa_cookie', null);
279
    }
280
281
    public function isVerifiedBySsoOn2faCookie(): bool
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function isVerifiedBySsoOn2faCookie()
Loading history...
282
    {
283
        return $this->get('verified_by_sso_on_2fa_cookie') === true;
284
    }
285
286
    public function setSsoOn2faCookieFingerprint(string $fingerprint)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function setSsoOn2faCookieFingerprint()
Loading history...
287
    {
288
        $this->set('sso_on_2fa_cookie_fingerprint', $fingerprint);
289
290
        return $this;
291
    }
292
293
    public function getSsoOn2faCookieFingerprint()
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getSsoOn2faCookieFingerprint()
Loading history...
294
    {
295
        return $this->get('sso_on_2fa_cookie_fingerprint');
296
    }
297
298
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
299
     * @param string $controllerName
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
300
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
301
     */
302
    public function setResponseAction($controllerName)
303
    {
304
        $this->set('response_controller', $controllerName);
305
        return $this;
306
    }
307
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
308
     * @return string|null
309
     */
310
    public function getResponseAction()
311
    {
312
        return $this->get('response_controller');
313
    }
314
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
315
     * @param string $serviceId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
316
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
317
     */
318
    public function setResponseContextServiceId($serviceId)
319
    {
320
        $this->set('response_context_service_id', $serviceId);
321
        return $this;
322
    }
323
324
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
325
     * @return string|null
326
     */
327
    public function getResponseContextServiceId()
328
    {
329
        return $this->get('response_context_service_id');
330
    }
331
332
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
333
     * @param $organization
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
334
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
335
     */
336
    public function setSchacHomeOrganization($organization)
337
    {
338
        $this->set('schac_home_organization', $organization);
339
        return $this;
340
    }
341
342
343
    public function setIsForceAuthn(bool $forceAuthn): self
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function setIsForceAuthn()
Loading history...
344
    {
345
        $this->set('force_authn', $forceAuthn);
346
        return $this;
347
    }
348
349
350
    public function isForceAuthn(): bool
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function isForceAuthn()
Loading history...
351
    {
352
        return $this->get('force_authn') === true;
353
    }
354
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
355
     * @return string|null
356
     */
357
    public function getSchacHomeOrganization()
358
    {
359
        return $this->get('schac_home_organization');
360
    }
361
362
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
363
     * @param string $locale
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
364
     * @return $this
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
365
     */
366
    public function setPreferredLocale($locale)
367
    {
368
        $this->set('locale', $locale);
369
        return $this;
370
    }
371
372
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
373
     * @return string|null
374
     */
375
    public function getPreferredLocale()
376
    {
377
        return $this->get('locale');
378
    }
379
380
    /**
381
     * note that the authentication mode is stored outside the session path, to enable other state handlers
0 ignored issues
show
Coding Style introduced by
Doc comment short description must start with a capital letter
Loading history...
382
     * to retrieve the Authentication state for a given authentication request id.
383
     *
384
     * @param $requestId
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
385
     * @param $authenticationMode
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
386
     */
0 ignored issues
show
Coding Style introduced by
Missing @return tag in function comment
Loading history...
387
    public function markAuthenticationModeForRequest($requestId, $authenticationMode)
388
    {
389
        $this->session->set('surfnet/gateway/auth_mode/' . $requestId, $authenticationMode);
390
    }
391
392
    public function getAuthenticationModeForRequestId($requestId)
0 ignored issues
show
Coding Style introduced by
Missing doc comment for function getAuthenticationModeForRequestId()
Loading history...
393
    {
394
        return $this->session->get('surfnet/gateway/auth_mode/' . $requestId);
395
    }
396
397
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
398
     * @param string $key
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
399
     * @param mixed $value Any scalar
0 ignored issues
show
Coding Style introduced by
Expected 2 spaces after parameter type; 1 found
Loading history...
400
     */
0 ignored issues
show
Coding Style introduced by
Missing @return tag in function comment
Loading history...
401
    protected function set($key, $value)
402
    {
403
        $this->session->set($this->sessionPath . $key, $value);
404
    }
405
406
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
407
     * @param string $key
0 ignored issues
show
Coding Style introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Tag value for @param tag indented incorrectly; expected 2 spaces but found 1
Loading history...
408
     * @return mixed|null Any scalar
0 ignored issues
show
Coding Style introduced by
Tag @return cannot be grouped with parameter tags in a doc comment
Loading history...
409
     */
410
    protected function get($key)
411
    {
412
        return $this->session->get($this->sessionPath . $key);
413
    }
414
}
415