![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/UserBundle/Model/ |
<?php declare(strict_types=1); namespace Mautic\UserBundle\Model; use Mautic\UserBundle\Event\PasswordStrengthValidateEvent; use Mautic\UserBundle\UserEvents; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use ZxcvbnPhp\Zxcvbn as PasswordStrengthEstimator; class PasswordStrengthEstimatorModel { public const MINIMUM_PASSWORD_STRENGTH_ALLOWED = 3; private const DICTIONARY = [ 'mautic', 'user', 'lead', 'bundle', 'campaign', 'company', ]; private PasswordStrengthEstimator $passwordStrengthEstimator; public function __construct(private EventDispatcherInterface $dispatcher) { $this->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)); } }