Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Oidc
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 1
 readResponse
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3/**
4 * @package Zmsadmin
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsadmin;
9
10use BO\Zmsclient\ModuleAccess;
11use BO\Zmsclient\OidcHandler;
12
13class Oidc extends BaseController
14{
15    /**
16     * @SuppressWarnings(Param)
17     * @return \Psr\Http\Message\ResponseInterface
18     */
19    #[\Override]
20    public function readResponse(
21        \Psr\Http\Message\RequestInterface $request,
22        \Psr\Http\Message\ResponseInterface $response,
23        array $args
24    ) {
25        try {
26            $state = $request->getParam('state');
27            $handler = new OidcHandler(\App::$http);
28            $result = $handler->handleCallback($state, 'zmsadmin');
29
30            if ($wrongModuleResponse = ModuleAccess::rejectWrongModuleAccess(ModuleAccess::MODULE_ADMIN, $result['workstation'], $response)) {
31                return $wrongModuleResponse;
32            }
33
34            if ($result['redirect_to_index']) {
35                return \BO\Slim\Render::redirect(
36                    'index',
37                    [],
38                    [
39                        'oidclogin' => true
40                    ]
41                );
42            }
43
44            return \BO\Slim\Render::redirect(
45                'workstationSelect',
46                [],
47                []
48            );
49        } catch (\BO\Slim\Exception\OAuthInvalid $e) {
50            throw $e;
51        } catch (\Exception $e) {
52            \App::$log->error('OIDC Login error', [
53                'event' => 'oauth_login_error',
54                'timestamp' => date('c'),
55                'provider' => \BO\Zmsclient\Auth::getOidcProvider(),
56                'application' => 'zmsadmin',
57                'error' => $e->getMessage(),
58                'code' => $e->getCode()
59            ]);
60            throw $e;
61        }
62    }
63}