|
| 1 | +<?php |
| 2 | + |
| 3 | +namespace App\Http\Controllers\Auth; |
| 4 | + |
| 5 | +use App\Http\Controllers\Controller; |
| 6 | +use App\Http\Requests\Auth\LoginRequest; |
| 7 | +use Illuminate\Http\RedirectResponse; |
| 8 | +use Illuminate\Http\Request; |
| 9 | +use Illuminate\Support\Facades\Auth; |
| 10 | +use Illuminate\View\View; |
| 11 | + |
| 12 | +class CustomerAuthController extends Controller |
| 13 | +{ |
| 14 | + public function showLogin(): View |
| 15 | + { |
| 16 | + return view('auth.login'); |
| 17 | + } |
| 18 | + |
| 19 | + public function login(LoginRequest $request): RedirectResponse |
| 20 | + { |
| 21 | + $request->authenticate(); |
| 22 | + |
| 23 | + $request->session()->regenerate(); |
| 24 | + |
| 25 | + return redirect()->intended(route('customer.licenses')); |
| 26 | + } |
| 27 | + |
| 28 | + public function logout(Request $request): RedirectResponse |
| 29 | + { |
| 30 | + Auth::logout(); |
| 31 | + |
| 32 | + $request->session()->invalidate(); |
| 33 | + $request->session()->regenerateToken(); |
| 34 | + |
| 35 | + return redirect()->route('customer.login'); |
| 36 | + } |
| 37 | + |
| 38 | + public function showForgotPassword(): View |
| 39 | + { |
| 40 | + return view('auth.forgot-password'); |
| 41 | + } |
| 42 | + |
| 43 | + public function sendPasswordResetLink(Request $request): RedirectResponse |
| 44 | + { |
| 45 | + $request->validate([ |
| 46 | + 'email' => ['required', 'email:rfc,dns'], |
| 47 | + ]); |
| 48 | + |
| 49 | + $status = \Illuminate\Support\Facades\Password::sendResetLink( |
| 50 | + $request->only('email') |
| 51 | + ); |
| 52 | + |
| 53 | + return $status === \Illuminate\Auth\Passwords\PasswordBroker::RESET_LINK_SENT |
| 54 | + ? back()->with(['status' => __($status)]) |
| 55 | + : back()->withErrors(['email' => __($status)]); |
| 56 | + } |
| 57 | + |
| 58 | + public function showResetPassword(string $token): View |
| 59 | + { |
| 60 | + return view('auth.reset-password', ['token' => $token]); |
| 61 | + } |
| 62 | + |
| 63 | + public function resetPassword(Request $request): RedirectResponse |
| 64 | + { |
| 65 | + $request->validate([ |
| 66 | + 'token' => ['required'], |
| 67 | + 'email' => ['required', 'email:rfc,dns'], |
| 68 | + 'password' => ['required', 'min:8', 'confirmed'], |
| 69 | + ]); |
| 70 | + |
| 71 | + $status = \Illuminate\Support\Facades\Password::reset( |
| 72 | + $request->only('email', 'password', 'password_confirmation', 'token'), |
| 73 | + function ($user, $password) { |
| 74 | + $user->forceFill([ |
| 75 | + 'password' => $password, |
| 76 | + ]); |
| 77 | + |
| 78 | + $user->save(); |
| 79 | + } |
| 80 | + ); |
| 81 | + |
| 82 | + return $status === \Illuminate\Auth\Passwords\PasswordBroker::PASSWORD_RESET |
| 83 | + ? redirect()->route('customer.login')->with('status', __($status)) |
| 84 | + : back()->withErrors(['email' => [__($status)]]); |
| 85 | + } |
| 86 | +} |
0 commit comments