Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 19
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 / 19
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 1
 show
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 / 14
0.00% covered (danger)
0.00%
0 / 1
20
 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\Auth;
4
5use App\Enums\Status;
6use App\Http\Controllers\Controller;
7use Illuminate\Http\RedirectResponse;
8use Illuminate\Http\Request;
9use Illuminate\Support\Facades\Auth;
10use Illuminate\View\View;
11
12class LoginController extends Controller
13{
14    public function show(): View
15    {
16        return view('auth.login');
17    }
18
19    public function login(Request $request): RedirectResponse
20    {
21        $credentials = $request->validate([
22            'email' => ['required', 'email'],
23            'password' => ['required', 'string'],
24        ]);
25
26        if (! Auth::attempt($credentials, $request->boolean('remember'))) {
27            return back()->withErrors(['email' => 'Credenciais inválidas.'])->onlyInput('email');
28        }
29
30        $request->session()->regenerate();
31        $request->user()->update(['last_login_at' => now()]);
32
33        if ($request->user()->status !== Status::Active) {
34            Auth::logout();
35            return back()->withErrors(['email' => 'Usuário inativo.'])->onlyInput('email');
36        }
37
38        return $request->user()->isAdmin()
39            ? redirect()->intended(route('admin.dashboard'))
40            : redirect()->intended(route('influencer.dashboard'));
41    }
42
43    public function logout(Request $request): RedirectResponse
44    {
45        Auth::logout();
46        $request->session()->invalidate();
47        $request->session()->regenerateToken();
48
49        return redirect()->route('login');
50    }
51}