Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Completed
Push — master ( 6a87fb...a42a1b )
by Cristian
15:19 queued 07:45
created

AuthenticatesUsers::showLoginForm()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Backpack\CRUD\app\Library\Auth;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Http\Response;
7
use Illuminate\Support\Facades\Auth;
8
use Illuminate\Validation\ValidationException;
9
10
trait AuthenticatesUsers
11
{
12
    use RedirectsUsers, ThrottlesLogins;
13
14
    /**
15
     * Show the application's login form.
16
     *
17
     * @return \Illuminate\Http\Response
0 ignored issues
show
Documentation introduced by
Should the return type not be \Illuminate\View\View|\I...\Contracts\View\Factory?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
18
     */
19
    public function showLoginForm()
20
    {
21
        $this->data['title'] = trans('backpack::base.login'); // set the page title
0 ignored issues
show
Bug introduced by
The property data does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
22
        $this->data['username'] = $this->username();
23
24
        return view(backpack_view('auth.login'), $this->data);
25
    }
26
27
    /**
28
     * Handle a login request to the application.
29
     *
30
     * @param  \Illuminate\Http\Request  $request
31
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
32
     *
33
     * @throws \Illuminate\Validation\ValidationException
34
     */
35
    public function login(Request $request)
36
    {
37
        $this->validateLogin($request);
38
39
        // If the class is using the ThrottlesLogins trait, we can automatically throttle
40
        // the login attempts for this application. We'll key this by the username and
41
        // the IP address of the client making these requests into this application.
42
        if (method_exists($this, 'hasTooManyLoginAttempts') &&
43
            $this->hasTooManyLoginAttempts($request)) {
44
            $this->fireLockoutEvent($request);
45
46
            return $this->sendLockoutResponse($request);
47
        }
48
49
        if ($this->attemptLogin($request)) {
50
            return $this->sendLoginResponse($request);
51
        }
52
53
        // If the login attempt was unsuccessful we will increment the number of attempts
54
        // to login and redirect the user back to the login form. Of course, when this
55
        // user surpasses their maximum number of attempts they will get locked out.
56
        $this->incrementLoginAttempts($request);
57
58
        return $this->sendFailedLoginResponse($request);
59
    }
60
61
    /**
62
     * Validate the user login request.
63
     *
64
     * @param  \Illuminate\Http\Request  $request
65
     * @return void
66
     *
67
     * @throws \Illuminate\Validation\ValidationException
68
     */
69
    protected function validateLogin(Request $request)
70
    {
71
        $request->validate([
72
            $this->username() => 'required|string',
73
            'password' => 'required|string',
74
        ]);
75
    }
76
77
    /**
78
     * Attempt to log the user into the application.
79
     *
80
     * @param  \Illuminate\Http\Request  $request
81
     * @return bool
82
     */
83
    protected function attemptLogin(Request $request)
84
    {
85
        return $this->guard()->attempt(
86
            $this->credentials($request), $request->filled('remember')
87
        );
88
    }
89
90
    /**
91
     * Get the needed authorization credentials from the request.
92
     *
93
     * @param  \Illuminate\Http\Request  $request
94
     * @return array
95
     */
96
    protected function credentials(Request $request)
97
    {
98
        return $request->only($this->username(), 'password');
99
    }
100
101
    /**
102
     * Send the response after the user was authenticated.
103
     *
104
     * @param  \Illuminate\Http\Request  $request
105
     * @return \Illuminate\Http\Response
106
     */
107
    protected function sendLoginResponse(Request $request)
108
    {
109
        $request->session()->regenerate();
0 ignored issues
show
Bug introduced by
The method regenerate() does not seem to exist on object<Symfony\Component...ssion\SessionInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
110
111
        $this->clearLoginAttempts($request);
112
113
        if ($response = $this->authenticated($request, $this->guard()->user())) {
114
            return $response;
115
        }
116
117
        return $request->wantsJson()
118
                    ? new Response('', 204)
119
                    : redirect()->intended($this->redirectPath());
120
    }
121
122
    /**
123
     * The user has been authenticated.
124
     *
125
     * @param  \Illuminate\Http\Request  $request
126
     * @param  mixed  $user
127
     * @return mixed
128
     */
129
    protected function authenticated(Request $request, $user)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $user is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
130
    {
131
        //
132
    }
133
134
    /**
135
     * Get the failed login response instance.
136
     *
137
     * @param  \Illuminate\Http\Request  $request
138
     * @return \Symfony\Component\HttpFoundation\Response
0 ignored issues
show
Documentation introduced by
Consider making the return type a bit more specific; maybe use NoType.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
139
     *
140
     * @throws \Illuminate\Validation\ValidationException
141
     */
142
    protected function sendFailedLoginResponse(Request $request)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
143
    {
144
        throw ValidationException::withMessages([
145
            $this->username() => [trans('auth.failed')],
146
        ]);
147
    }
148
149
    /**
150
     * Get the login username to be used by the controller.
151
     *
152
     * @return string
153
     */
154
    public function username()
155
    {
156
        return 'email';
157
    }
158
159
    /**
160
     * Log the user out of the application.
161
     *
162
     * @param  \Illuminate\Http\Request  $request
163
     * @return \Illuminate\Http\Response
164
     */
165
    public function logout(Request $request)
166
    {
167
        $this->guard()->logout();
168
169
        $request->session()->invalidate();
170
171
        $request->session()->regenerateToken();
0 ignored issues
show
Bug introduced by
The method regenerateToken() does not seem to exist on object<Symfony\Component...ssion\SessionInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
172
173
        if ($response = $this->loggedOut($request)) {
174
            return $response;
175
        }
176
177
        return $request->wantsJson()
178
            ? new Response('', 204)
179
            : redirect('/');
180
    }
181
182
    /**
183
     * The user has logged out of the application.
184
     *
185
     * @param  \Illuminate\Http\Request  $request
186
     * @return mixed
187
     */
188
    protected function loggedOut(Request $request)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
189
    {
190
        //
191
    }
192
193
    /**
194
     * Get the guard to be used during authentication.
195
     *
196
     * @return \Illuminate\Contracts\Auth\StatefulGuard
197
     */
198
    protected function guard()
199
    {
200
        return Auth::guard();
201
    }
202
}
203