[+] chore(root): Initialise le projet avec une structure de base Crée la structure de base du projet Symfony, incluant les entités, services, formulaires, et templates nécessaires pour la gestion des comptes utilisateurs, la sécurité, et la gestion des mots de passe oubliés. Ajoute également la configuration pour la gestion des assets avec Vite, la gestion des fichiers avec Flysystem, et la génération de sitemaps. ```
53 lines
1.6 KiB
PHP
53 lines
1.6 KiB
PHP
<?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);
|
|
}
|
|
}
|