You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ae3-auth/src/app/Rules/CheckUsedPasswordRule.php

35 lines
966 B
PHP

<?php
namespace Pablo\Ae3auth\app\Rules;
use Closure;
use Illuminate\Contracts\Validation\DataAwareRule;
use Illuminate\Contracts\Validation\ValidationRule;
use Pablo\Ae3auth\app\Facades\PasswordHistoryManager;
class CheckUsedPasswordRule implements ValidationRule, DataAwareRule
{
/**
* @var array
*/
private array $data = [];
public function validate(string $attribute, $value, Closure $fail): void
{
$usernameColumn = config('ae3auth-config.user.username_column');
$userModel = config('ae3auth-config.user.user_model');
if (!$user = auth()->user()) {
$user = $userModel::firstWhere($usernameColumn, $this->data[$usernameColumn]);
$user ?: $fail(__('failed'));
}
if (!PasswordHistoryManager::inHistory($user->id, $value)) {
$fail(__('auth.password_used'));
}
}
public function setData(array $data)
{
$this->data = $data;
}
}