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 Zmsstatistic
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsstatistic;
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    public function readResponse(
20        \Psr\Http\Message\RequestInterface $request,
21        \Psr\Http\Message\ResponseInterface $response,
22        array $args
23    ) {
24        try {
25            $state = $request->getParam('state');
26            $handler = new OidcHandler(\App::$http);
27            $result = $handler->handleCallback($state, 'zmsstatistic');
28
29            if ($wrongModuleResponse = ModuleAccess::rejectWrongModuleAccess(ModuleAccess::MODULE_STATISTIC, $result['workstation'], $response)) {
30                return $wrongModuleResponse;
31            }
32
33            if ($result['redirect_to_index']) {
34                return \BO\Slim\Render::redirect(
35                    'index',
36                    [],
37                    [
38                        'oidclogin' => true
39                    ]
40                );
41            }
42
43            return \BO\Slim\Render::redirect(
44                'workstationSelect',
45                [],
46                []
47            );
48        } catch (\BO\Slim\Exception\OAuthInvalid $e) {
49            throw $e;
50        } catch (\Exception $e) {
51            \App::$log->error('OIDC Login error', [
52                'event' => 'oauth_login_error',
53                'timestamp' => date('c'),
54                'provider' => \BO\Zmsclient\Auth::getOidcProvider(),
55                'application' => 'zmsstatistic',
56                'error' => $e->getMessage(),
57                'code' => $e->getCode()
58            ]);
59            throw $e;
60        }
61    }
62}