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 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
PasswordController
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 4
30
0.00% covered (danger)
0.00%
0 / 1
 showForgot
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 sendReset
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 showReset
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 reset
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace App\Http\Controllers\Customer;
4
5use App\Http\Controllers\Controller;
6use App\Models\admin\Customer;
7use Illuminate\Auth\Events\PasswordReset;
8use Illuminate\Http\RedirectResponse;
9use Illuminate\Http\Request;
10use Illuminate\Support\Facades\Hash;
11use Illuminate\Support\Facades\Password;
12use Illuminate\Support\Str;
13use Illuminate\Validation\Rules\Password as PasswordRule;
14use Illuminate\View\View;
15
16class PasswordController extends Controller
17{
18    public function showForgot(): View
19    {
20        return view('website.account.forgot-password');
21    }
22
23    public function sendReset(Request $request): RedirectResponse
24    {
25        $request->validate(['email' => ['required', 'email']]);
26
27        $status = Password::broker('customers')->sendResetLink($request->only('email'));
28
29        // Never reveal whether the email exists — same message either way.
30        return back()->with('success', 'If that email has an account, a reset link is on its way.');
31    }
32
33    public function showReset(string $token): View
34    {
35        return view('website.account.reset-password', ['token' => $token, 'email' => request('email')]);
36    }
37
38    public function reset(Request $request): RedirectResponse
39    {
40        $request->validate([
41            'token' => ['required'],
42            'email' => ['required', 'email'],
43            'password' => ['required', 'confirmed', PasswordRule::defaults()],
44        ]);
45
46        $status = Password::broker('customers')->reset(
47            $request->only('email', 'password', 'password_confirmation', 'token'),
48            function (Customer $customer, string $password) {
49                $customer->forceFill([
50                    'password' => Hash::make($password),
51                    'remember_token' => Str::random(60),
52                ])->save();
53
54                event(new PasswordReset($customer));
55            }
56        );
57
58        return $status === Password::PASSWORD_RESET
59            ? redirect()->route('account.login')->with('success', 'Password reset — please sign in.')
60            : back()->withInput($request->only('email'))->with('error', __($status));
61    }
62}