Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
LoginController
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 3
30
0.00% covered (danger)
0.00%
0 / 1
 showLoginForm
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 login
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
12
 logout
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace App\Http\Controllers\WebAuth;
4
5use App\Http\Controllers\Controller;
6use App\Http\Models\Auth\Role;
7use App\Http\Models\Auth\User;
8use Illuminate\Http\Request;
9use Illuminate\Support\Facades\Auth;
10
11class LoginController extends Controller
12{
13    /**
14     * Show the login form.
15     *
16     * @return \Illuminate\View\View
17     */
18    public function showLoginForm()
19    {
20        return view('auth.login');
21    }
22
23    /**
24     * Handle a login request to the application.
25     *
26     * @param  \Illuminate\Http\Request  $request
27     * @return \Illuminate\Http\RedirectResponse
28     */
29    public function login(Request $request)
30    {
31        $credentials = $request->validate([
32            'email' => ['required', 'email'],
33            'password' => ['required'],
34        ]);
35
36
37        if (Auth::guard('web')->attempt($credentials)) {
38            $user = User::firstWhere('email', $credentials['email']);
39            $roles = $user->roles();
40            if (!in_array(Role::VENGRESO_ADMIN, $roles)) {
41                Auth::guard('web')->logout();
42                $request->session()->invalidate();
43                return back()->withErrors([
44                    'email' => 'The provided credentials do not match our records.',
45                ]);
46            }
47
48            $request->session()->regenerate();
49
50            return redirect()->intended('dashboard');
51        }
52
53        return back()->withErrors([
54            'email' => 'The provided credentials do not match our records.',
55        ]);
56    }
57
58    /**
59     * Log the user out of the application.
60     *
61     * @param  \Illuminate\Http\Request  $request
62     * @return \Illuminate\Http\RedirectResponse
63     */
64    public function logout(Request $request)
65    {
66        Auth::guard('web')->logout();
67
68        $request->session()->invalidate();
69
70        $request->session()->regenerateToken();
71
72        return redirect('/');
73    }
74}