Repository navigation
Expand file tree
/
Copy pathWayfController.php
More file actions
92 lines (82 loc) · 3.82 KB
/
Copy pathWayfController.php
File metadata and controls
92 lines (82 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/**
* Copyright 2010 SURFnet B.V.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace OpenConext\EngineBlockFunctionalTestingBundle\Controllers;
use OpenConext\EngineBlockBundle\Service\WayfRenderer;
use OpenConext\EngineBlockFunctionalTestingBundle\Helper\TestEntitySeeder;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
/**
* @package OpenConext\EngineBlockFunctionalTestingBundle\Controllers
* @SuppressWarnings("PMD")
*/
class WayfController extends AbstractController
{
public function __construct(
private readonly WayfRenderer $wayfRenderer,
) {
}
public function wayfAction(Request $request)
{
$currentLocale = $request->query->getString('lang', 'en');
$request->cookies->set('lang', $currentLocale);
$backLink = $request->query->getBoolean('backLink');
$displayUnconnectedIdpsWayf = $request->query->getBoolean('displayUnconnectedIdpsWayf');
$addDiscoveries = $request->query->getBoolean('addDiscoveries', true);
$rememberChoiceFeature = $request->query->getBoolean('rememberChoiceFeature');
$rememberChoicePerIdp = $request->query->getBoolean('rememberChoicePerIdp');
$cutoffPointForShowingUnfilteredIdps = $request->query->getInt('cutoffPointForShowingUnfilteredIdps', 100);
$showIdPBanner = $request->query->getBoolean('showIdPBanner', true);
$defaultIdpEntityId = $request->query->get('defaultIdpEntityId', '');
$preferredIdpEntityIds = $request->query->all('preferredIdpEntityIds');
$connectedIdps = $request->query->getInt('connectedIdps', 5);
$unconnectedIdps = $request->query->getInt('unconnectedIdps');
$randomIdps = $request->query->getInt('randomIdps');
$idpList = $randomIdps === 0
? TestEntitySeeder::buildIdps($connectedIdps, $unconnectedIdps, $currentLocale, $defaultIdpEntityId, $addDiscoveries)
: TestEntitySeeder::buildRandomIdps($randomIdps, $currentLocale, $defaultIdpEntityId);
$output = $this->wayfRenderer->render(
idpList: $idpList,
preferredIdpEntityIds: $preferredIdpEntityIds,
action: $this->generateUrl('functional_testing_handle_wayf'),
currentLocale: $currentLocale,
defaultIdpEntityId: $defaultIdpEntityId,
shouldDisplayBanner: $showIdPBanner,
backLink: $backLink,
cutoffPoint: $cutoffPointForShowingUnfilteredIdps,
rememberChoice: $rememberChoiceFeature || $rememberChoicePerIdp,
showRequestAccess: $displayUnconnectedIdpsWayf,
requestId: 'bogus-request-id',
serviceProvider: TestEntitySeeder::buildSp(),
rememberChoicePerIdp: $rememberChoicePerIdp,
);
return new Response($output);
}
public function handleWayfAction(Request $request)
{
if ($request->request->has('idp')) {
return $this->redirectToRoute(
'open_conext_engine_block_authentication_homepage',
[
'idp' => $request->request->get('idp')
]
);
}
throw new AccessDeniedException('No IdP parameter found');
}
}