UpdateUserPassword.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Actions\Fortify;
  3. use Illuminate\Support\Facades\Hash;
  4. use Illuminate\Support\Facades\Validator;
  5. use Laravel\Fortify\Contracts\UpdatesUserPasswords;
  6. class UpdateUserPassword implements UpdatesUserPasswords
  7. {
  8. use PasswordValidationRules;
  9. /**
  10. * Validate and update the user's password.
  11. *
  12. * @param mixed $user
  13. * @param array $input
  14. * @return void
  15. */
  16. public function update($user, array $input)
  17. {
  18. Validator::make($input, [
  19. 'current_password' => ['required', 'string'],
  20. 'password' => $this->passwordRules(),
  21. ])->after(function ($validator) use ($user, $input) {
  22. if (! isset($input['current_password']) || ! Hash::check($input['current_password'], $user->password)) {
  23. $validator->errors()->add('current_password', __('The provided password does not match your current password.'));
  24. }
  25. })->validateWithBag('updatePassword');
  26. $user->forceFill([
  27. 'password' => Hash::make($input['password']),
  28. ])->save();
  29. }
  30. }