?'; /** * 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); } }