Files
ludikevent_crm/src/Service/Generator/TempPasswordGenerator.php
Serreau Jovann 662bb0bcc6 ```
[+] 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.
```
2025-12-11 17:22:26 +01:00

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);
}
}