Files
ludikevent_crm/src/Service/Generator/TempPasswordGenerator.php

53 lines
1.6 KiB
PHP
Raw Normal View History

<?php
namespace App\Service\Generator;
/**
* Class TempPasswordGenerator
*
* Fournit des fonctionnalités pour générer des mots de passe temporaires sécurisés.
*/
class TempPasswordGenerator
{
private const DEFAULT_LENGTH = 12;
private const DEFAULT_CHARACTERS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{}|;:,.<>?';
/**
* Génère un mot de passe temporaire aléatoire.
*
* @param int $length Longueur désirée du mot de passe (par défaut 12).
* @param string $characters Jeu de caractères à utiliser dans le mot de passe.
* @return string Mot de passe généré.
*/
public static function generate(int $length = self::DEFAULT_LENGTH, string $characters = self::DEFAULT_CHARACTERS): string
{
if ($length <= 0) {
$length = self::DEFAULT_LENGTH;
}
$password = '';
$maxIndex = strlen($characters) - 1;
for ($i = 0; $i < $length; $i++) {
$password .= $characters[random_int(0, $maxIndex)];
}
return $password;
}
/**
* Vérifie si un mot de passe remplit certaines exigences de complexité.
*
* @param string $password Mot de passe à vérifier.
* @return bool True si les critères sont respectés, false sinon.
*/
public static function isComplex(string $password): bool
{
return strlen($password) >= 8
&& preg_match('/[A-Z]/', $password)
&& preg_match('/[a-z]/', $password)
&& preg_match('/[0-9]/', $password)
&& preg_match('/[!@#$%^&*()\-_=+\[\]{}|;:,.<>?]/', $password);
}
}