Test Failed
Branch master (52949b)
by Artem
05:53
created

Saml2Controller::metadata()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
3
namespace Slides\Saml2\Http\Controllers;
4
5
use Slides\Saml2\Events\SignedIn;
6
use Slides\Saml2\Auth;
7
use Illuminate\Routing\Controller;
0 ignored issues
show
Bug introduced by
The type Illuminate\Routing\Controller was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use Illuminate\Http\Request;
0 ignored issues
show
Bug introduced by
The type Illuminate\Http\Request was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use OneLogin\Saml2\Error as OneLoginError;
10
11
/**
12
 * Class Saml2Controller
13
 *
14
 * @package Slides\Saml2\Http\Controllers
15
 */
16
class Saml2Controller extends Controller
17
{
18
    /**
19
     * Render the metadata.
20
     *
21
     * @param Auth $auth
22
     *
23
     * @return \Illuminate\Support\Facades\Response
24
     *
25
     * @throws OneLoginError
26
     */
27
    public function metadata(Auth $auth)
28
    {
29
        $metadata = $auth->getMetadata();
30
31
        return response($metadata, 200, ['Content-Type' => 'text/xml']);
0 ignored issues
show
Bug introduced by
The function response was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

31
        return /** @scrutinizer ignore-call */ response($metadata, 200, ['Content-Type' => 'text/xml']);
Loading history...
32
    }
33
34
    /**
35
     * Process the SAML Response sent by the IdP.
36
     *
37
     * Fires "SignedIn" event if a valid user is found.
38
     *
39
     * @param Auth $auth
40
     *
41
     * @return \Illuminate\Support\Facades\Redirect
42
     *
43
     * @throws OneLoginError
44
     * @throws \OneLogin\Saml2\ValidationError
45
     */
46
    public function acs(Auth $auth)
47
    {
48
        $errors = $auth->acs();
49
50
        if (!empty($errors)) {
51
            logger()->error('saml2.error_detail', ['error' => $auth->getLastErrorReason()]);
0 ignored issues
show
Bug introduced by
The function logger was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

51
            /** @scrutinizer ignore-call */ 
52
            logger()->error('saml2.error_detail', ['error' => $auth->getLastErrorReason()]);
Loading history...
52
            session()->flash('saml2.error_detail', [$auth->getLastErrorReason()]);
0 ignored issues
show
Bug introduced by
The function session was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

52
            /** @scrutinizer ignore-call */ 
53
            session()->flash('saml2.error_detail', [$auth->getLastErrorReason()]);
Loading history...
53
54
            logger()->error('saml2.error', $errors);
55
            session()->flash('saml2.error', $errors);
56
57
            return redirect(config('saml2.errorRoute'));
0 ignored issues
show
Bug introduced by
The function config was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

57
            return redirect(/** @scrutinizer ignore-call */ config('saml2.errorRoute'));
Loading history...
Bug introduced by
The function redirect was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

57
            return /** @scrutinizer ignore-call */ redirect(config('saml2.errorRoute'));
Loading history...
58
        }
59
60
        $user = $auth->getSaml2User();
61
62
        event(new SignedIn($user, $auth));
0 ignored issues
show
Bug introduced by
The function event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

62
        /** @scrutinizer ignore-call */ 
63
        event(new SignedIn($user, $auth));
Loading history...
63
64
        $redirectUrl = $user->getIntendedUrl();
65
66
        if ($redirectUrl !== null) {
67
            return redirect($redirectUrl);
68
        } else {
69
            return redirect(config('saml2.loginRoute'));
70
        }
71
    }
72
73
    /**
74
     * Process the SAML Logout Response / Logout Request sent by the IdP.
75
     *
76
     * Fires 'saml2.logoutRequestReceived' event if its valid.
77
     *
78
     * This means the user logged out of the SSO infrastructure, you 'should' log him out locally too.
79
     *
80
     * @param Auth $auth
81
     *
82
     * @return \Illuminate\Support\Facades\Redirect
83
     *
84
     * @throws OneLoginError
85
     * @throws \Exception
86
     */
87
    public function sls(Auth $auth)
88
    {
89
        $error = $auth->sls(config('saml2.retrieveParametersFromServer'));
0 ignored issues
show
Bug introduced by
The function config was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

89
        $error = $auth->sls(/** @scrutinizer ignore-call */ config('saml2.retrieveParametersFromServer'));
Loading history...
90
91
        if (!empty($error)) {
92
            throw new \Exception("Could not log out");
93
        }
94
95
        return redirect(config('saml2.logoutRoute')); //may be set a configurable default
0 ignored issues
show
Bug introduced by
The function redirect was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

95
        return /** @scrutinizer ignore-call */ redirect(config('saml2.logoutRoute')); //may be set a configurable default
Loading history...
96
    }
97
98
    /**
99
     * Initiate a login request.
100
     *
101
     * @param Illuminate\Http\Request $request
0 ignored issues
show
Bug introduced by
The type Slides\Saml2\Http\Contro...Illuminate\Http\Request was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
102
     * @param Auth $auth
103
     *
104
     * @return void
105
     *
106
     * @throws OneLoginError
107
     */
108
    public function login(Request $request, Auth $auth)
109
    {
110
        $auth->login($request->query('returnTo', config('saml2.loginRoute')));
0 ignored issues
show
Bug introduced by
The function config was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

110
        $auth->login($request->query('returnTo', /** @scrutinizer ignore-call */ config('saml2.loginRoute')));
Loading history...
111
    }
112
113
    /**
114
     * Initiate a logout request.
115
     *
116
     * @param Illuminate\Http\Request $request
117
     * @param Auth $auth
118
     *
119
     * @return void
120
     *
121
     * @throws OneLoginError
122
     */
123
    public function logout(Request $request, Auth $auth)
124
    {
125
        $auth->logout(
126
            $request->query('returnTo'),
127
            $request->query('nameId'),
128
            $request->query('sessionIndex')
129
        );
130
    }
131
}
132