diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php index e536ccb..75aa024 100644 --- a/app/Http/Controllers/Auth/PasswordResetLinkController.php +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -3,12 +3,12 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; -use App\Models\PasswordResetToken; -use Illuminate\Http\RedirectResponse; +use App\Mail\ResetPasswordMail; +use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Facades\Password; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Validator; use Illuminate\View\View; @@ -45,30 +45,49 @@ public function store(Request $request) return redirect()->back()->withInput(); } - DB::table('password_reset_tokens')->updateOrInsert(['email' => $request->email], [ - 'token' => Hash::make($request->_token), - 'created_at' => now(), - ]); + DB::table('password_reset_tokens')->updateOrInsert( + ['email' => $request->email], + [ + 'token' => Hash::make($request->_token), + 'created_at' => now(), + ] + ); + + $resetLink = route('auth.create_new_password_form', ['token' => $request->_token, 'email' => $request->email]); + Mail::to($request->email)->send(new ResetPasswordMail($resetLink)); + alert()->success('Berhasil', 'Silahkan cek email anda untuk mereset password'); return redirect()->back(); } - // public function store(Request $request): RedirectResponse - // { - // $request->validate([ - // 'email' => ['required', 'email'], - // ]); - // // We will send the password reset link to this user. Once we have attempted - // // to send the link, we will examine the response then see the message we - // // need to show to the user. Finally, we'll send out a proper response. - // $status = Password::sendResetLink( - // $request->only('email') - // ); + public function createNewPasswordForm(Request $request) + { + return view('auth.reset-password-form', ['token' => $request->token, 'email' => $request->email]); + } - // return $status == Password::RESET_LINK_SENT - // ? back()->with('status', __($status)) - // : back()->withInput($request->only('email')) - // ->withErrors(['email' => __($status)]); - // } + public function storeNewPasswordForm(Request $request) + { + $data = DB::table('password_reset_tokens')->where('email', $request->email)->first(); + + if ($data == null || !Hash::check($request->token, $data->token)) { + toast('Link reset password tidak valid atau kedaluwarsa', 'error')->position('top')->autoclose(3000); + return redirect()->back(); + } + + DB::beginTransaction(); + $user = User::where('email', $request->email)->first(); + $user->password = Hash::make($request->new_password); + try { + $user->save(); + DB::table('password_reset_tokens')->where('email', $request->email)->delete(); + DB::commit(); + alert()->success('Berhasil', 'Password berhasil direset, silahkan login'); + return redirect()->route('auth.login'); + } catch (\Throwable $th) { + DB::rollBack(); + toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000); + return redirect()->back(); + } + } } diff --git a/app/Mail/ResetPasswordMail.php b/app/Mail/ResetPasswordMail.php index 973835c..337af3c 100644 --- a/app/Mail/ResetPasswordMail.php +++ b/app/Mail/ResetPasswordMail.php @@ -13,12 +13,14 @@ class ResetPasswordMail extends Mailable { use Queueable, SerializesModels; + public $resetLink; + /** * Create a new message instance. */ - public function __construct() + public function __construct($resetLink) { - // + $this->resetLink = $resetLink; } /** @@ -38,6 +40,9 @@ public function content(): Content { return new Content( view: 'auth.mail-reset-password', + with: [ + 'resetLink' => $this->resetLink + ] ); } diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php index 93f12dc..e63d054 100644 --- a/database/seeders/UsersSeeder.php +++ b/database/seeders/UsersSeeder.php @@ -18,7 +18,7 @@ public function run(): void User::create([ 'username' => 'admin', 'name' => 'Admin Sage', - 'email' => 'adminSage@gmail.com', + 'email' => 'ariefajar739@gmail.com', 'password' => Hash::make('admin123'), 'role' => 'admin' ]), diff --git a/resources/views/auth/confirm-password.blade.php b/resources/views/auth/confirm-password.blade.php deleted file mode 100644 index 3cbbe08..0000000 --- a/resources/views/auth/confirm-password.blade.php +++ /dev/null @@ -1,27 +0,0 @@ - -
- {{ __('This is a secure area of the application. Please confirm your password before continuing.') }} -
- -
- @csrf - - -
- - - - - -
- -
- - {{ __('Confirm') }} - -
-
-
diff --git a/resources/views/auth/forgot-password.blade.php b/resources/views/auth/forgot-password.blade.php index 595fdfe..534653c 100644 --- a/resources/views/auth/forgot-password.blade.php +++ b/resources/views/auth/forgot-password.blade.php @@ -4,7 +4,7 @@ - Reset Password | CornQuest + Lupa Password | CornQuest diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 6c318db..8295bb0 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -123,6 +123,7 @@ class="fw-semibold text-primary text-decoration-underline"> Signup

+ @include('sweetalert::alert')