passwordStrengthEstimator = new PasswordStrengthEstimator(); } /** * @param string[] $dictionary */ public function validate(?string $password, int $score = self::MINIMUM_PASSWORD_STRENGTH_ALLOWED, array $dictionary = self::DICTIONARY): bool { $isValid = $score <= $this->passwordStrengthEstimator->passwordStrength($password, $this->sanitizeDictionary($dictionary))['score']; $passwordStrengthValidateEvent = new PasswordStrengthValidateEvent($isValid, $password); $this->dispatcher->dispatch($passwordStrengthValidateEvent, UserEvents::USER_PASSWORD_STRENGTH_VALIDATION); return $passwordStrengthValidateEvent->isValid; } /** * @param string[] $dictionary * * @return string[] */ private function sanitizeDictionary(array $dictionary): array { return array_unique(array_filter($dictionary)); } }