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
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.twig
templates/bundles/ResetPasswordBundle/reset_password/reset.html.twig
templates/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.