mixedCase(); } if ($cfg['require_numbers']) { $rule->numbers(); } if ($cfg['require_symbols']) { $rule->symbols(); } if ($cfg['check_compromised']) { $rule->uncompromised(); } return $rule; } /** * Количество хранимых в истории паролей (запрет повтора). */ public static function historyLimit(): int { return (int) config('security.password.history_limit'); } /** * Срок действия пароля в днях (0 — без ограничения). */ public static function maxAgeDays(): int { return (int) config('security.password.max_age_days'); } }