Files
zenithar/app/Livewire/Auth/ResetPassword.php

68 lines
1.8 KiB
PHP

<?php
namespace App\Livewire\Auth;
use App\Models\User;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
use Livewire\Attributes\Layout;
use Livewire\Attributes\Url;
use Livewire\Attributes\Validate;
use Livewire\Component;
use TallStackUi\Traits\Interactions;
#[Layout('components.layouts.login')]
class ResetPassword extends Component
{
use Interactions;
#[Url]
#[Validate('required|email')]
public $email;
#[Validate('required')]
public $token;
#[Validate('required|min:8|confirmed')]
public $password;
#[Validate('required')]
public $password_confirmation;
public function render(): View
{
return view('livewire.auth.reset-password');
}
public function resetPassword(): void
{
$this->validate();
$status = Password::reset(
[
'email' => $this->email,
'token' => $this->token,
'password' => $this->password,
'password_confirmation' => $this->password_confirmation,
],
function (User $user, string $password) {
$user->forceFill(['password' => Hash::make($password)])->setRememberToken(Str::random(60));
$user->save();
event(new PasswordReset($user));
}
);
if ($status === Password::PASSWORD_RESET) {
Session::flash('toast', ['type' => 'success', 'message' => __($status)]);
$this->redirectRoute('login', navigate: true);
} else {
throw ValidationException::withMessages(['email' => __($status)]);
}
}
}