ayto / reset-password-bundle
Bundle Symfony pour la réinitialisation de mot de passe avec API Platform et JWT
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/ayto/reset-password-bundle
Requires
- php: >=8.1
 - api-platform/core: ^3.0|^4.0
 - doctrine/doctrine-bundle: ^2.0|^3.0
 - doctrine/orm: ^2.0|^3.0
 - symfony/framework-bundle: ^6.0|^7.0
 - symfony/mailer: ^6.0|^7.0
 - symfony/security-bundle: ^6.0|^7.0
 
README
Un bundle Symfony léger et autonome pour gérer la réinitialisation de mot de passe. Fournit une solution complète avec interface utilisateur intégrée, sans dépendances frontend supplémentaires.
✨ Caractéristiques
- 🔒 Système sécurisé de réinitialisation de mot de passe
 - 📧 Envoi d'emails de réinitialisation personnalisables
 - 🎨 Interface utilisateur moderne intégrée
 - 🔄 Tokens de réinitialisation sécurisés avec expiration
 - 📱 Design responsive
 - 🚀 Installation simple sans configuration frontend
 
📋 Prérequis
- PHP 8.1 ou supérieur
 - Symfony 6.0 ou supérieur
 - Composer
 
🚀 Installation
- Installer le bundle via Composer :
 
composer require ayto/reset-password-bundle
- Ajouter le bundle dans 
config/bundles.php: 
return [ // ... Ayto\ResetPasswordBundle\ResetPasswordBundle::class => ['all' => true], ];
- Configurer le bundle dans 
config/packages/reset_password.yaml: 
reset_password: from_email: 'no-reply@example.com' # Email utilisé pour envoyer les emails de réinitialisation token_lifetime: 3600 # Durée de validité du token en secondes (1 heure par défaut) user_class: App\Entity\User # Votre classe User qui implémente ResetPasswordUserInterface
- Implémenter l'interface dans votre entité User :
 
use Ayto\ResetPasswordBundle\Model\ResetPasswordUserInterface; class User implements ResetPasswordUserInterface { private ?string $resetToken = null; private ?\DateTimeInterface $resetTokenExpiresAt = null; public function getResetPasswordToken(): ?string { return $this->resetToken; } public function setResetPasswordToken(?string $token): void { $this->resetToken = $token; } public function getResetPasswordTokenExpiresAt(): ?\DateTimeInterface { return $this->resetTokenExpiresAt; } public function setResetPasswordTokenExpiresAt(?\DateTimeInterface $expiresAt): void { $this->resetTokenExpiresAt = $expiresAt; } public function getEmail(): string { return $this->email; } }
- Ajouter les routes dans 
config/routes.yaml: 
reset_password: resource: '@ResetPasswordBundle/Resources/config/routes.yaml'
🎨 Personnalisation
Templates
Vous pouvez surcharger les templates en créant les fichiers suivants dans votre application :
templates/bundles/ResetPasswordBundle/reset_password/request.html.twigtemplates/bundles/ResetPasswordBundle/reset_password/reset.html.twigtemplates/bundles/ResetPasswordBundle/emails/reset_password.html.twig
Styles
Les styles CSS sont inclus directement dans les templates et peuvent être surchargés en modifiant les templates ou en ajoutant vos propres styles.
🔒 Sécurité
- Génération sécurisée des tokens
 - Validation des mots de passe côté client et serveur
 - Protection contre les attaques par force brute
 - Expiration automatique des tokens
 - Invalidation des anciens tokens
 
🤝 Contribution
Les contributions sont les bienvenues ! Pour contribuer :
- Forker le projet
 - Créer une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Commiter vos changements (
git commit -m 'Add some AmazingFeature') - Pusher sur la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
 
📝 License
Distribué sous la licence MIT. Voir LICENSE pour plus d'informations.