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     * @return \Illuminate\Http\RedirectResponse
27     */
28    public function login(Request $request)
29    {
30        $credentials = $request->validate([
31            'email' => ['required', 'email'],
32            'password' => ['required'],
33        ]);
34
35        if (Auth::guard('web')->attempt($credentials)) {
36            $user = User::firstWhere('email', $credentials['email']);
37            $roles = $user->roles();
38            if (! in_array(Role::VENGRESO_ADMIN, $roles)) {
39                Auth::guard('web')->logout();
40                $request->session()->invalidate();
41
42                return back()->withErrors([
43                    'email' => 'The provided credentials do not match our records.',
44                ]);
45            }
46
47            $request->session()->regenerate();
48
49            return redirect()->intended('dashboard');
50        }
51
52        return back()->withErrors([
53            'email' => 'The provided credentials do not match our records.',
54        ]);
55    }
56
57    /**
58     * Log the user out of the application.
59     *
60     * @return \Illuminate\Http\RedirectResponse
61     */
62    public function logout(Request $request)
63    {
64        Auth::guard('web')->logout();
65
66        $request->session()->invalidate();
67
68        $request->session()->regenerateToken();
69
70        return redirect('/');
71    }
72}