auditionadmin/app/Actions/Fortify/UpdateUserPassword.php

42 lines
1.2 KiB
PHP

<?php
namespace App\Actions\Fortify;
use App\Models\AuditLogEntry;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\UpdatesUserPasswords;
use function auth;
class UpdateUserPassword implements UpdatesUserPasswords
{
use PasswordValidationRules;
/**
* Validate and update the user's password.
*
* @param array<string, string> $input
*/
public function update(User $user, array $input): void
{
Validator::make($input, [
'current_password' => ['required', 'string', 'current_password:web'],
'password' => $this->passwordRules(),
], [
'current_password.current_password' => __('The provided password does not match your current password.'),
])->validate();
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => 'Changed Password',
'affected' => ['users' => [$user->id]],
]);
}
}