PHPackages                             ayto/reset-password-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. ayto/reset-password-bundle

ActiveSymfony-bundle[Authentication &amp; Authorization](/categories/authentication)

ayto/reset-password-bundle
==========================

Bundle Symfony pour la réinitialisation de mot de passe avec API Platform et JWT

03PHP

Since Dec 7Pushed 1y ago1 watchersCompare

[ Source](https://github.com/AytoKyto/symfony-reset-password-bundle)[ Packagist](https://packagist.org/packages/ayto/reset-password-bundle)[ RSS](/packages/ayto-reset-password-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Symfony Reset Password Bundle
=============================

[](#symfony-reset-password-bundle)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)[![PHP Version](https://camo.githubusercontent.com/04744bae0a61d2ffe29c26f07a9612eae20445fc6feaeb77b3af1f0e9be6447c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e312d3838393242462e737667)](https://camo.githubusercontent.com/04744bae0a61d2ffe29c26f07a9612eae20445fc6feaeb77b3af1f0e9be6447c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e312d3838393242462e737667)[![Symfony Version](https://camo.githubusercontent.com/4f4c18e36634ef18fe3a01cb30b36c4fbda36a7abb133542f0d489e2756b770d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253545362e302d3030303030302e737667)](https://camo.githubusercontent.com/4f4c18e36634ef18fe3a01cb30b36c4fbda36a7abb133542f0d489e2756b770d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253545362e302d3030303030302e737667)

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
------------------

[](#-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
-----------

[](#-prérequis)

- PHP 8.1 ou supérieur
- Symfony 6.0 ou supérieur
- Composer

🚀 Installation
--------------

[](#-installation)

1. Installer le bundle via Composer :

```
composer require ayto/reset-password-bundle
```

2. Ajouter le bundle dans `config/bundles.php` :

```
return [
    // ...
    Ayto\ResetPasswordBundle\ResetPasswordBundle::class => ['all' => true],
];
```

3. 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
```

4. 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;
    }
}
```

5. Ajouter les routes dans `config/routes.yaml` :

```
reset_password:
    resource: '@ResetPasswordBundle/Resources/config/routes.yaml'
```

🎨 Personnalisation
------------------

[](#-personnalisation)

### Templates

[](#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

[](#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é
----------

[](#-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
--------------

[](#-contribution)

Les contributions sont les bienvenues ! Pour contribuer :

1. Forker le projet
2. Créer une branche pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`)
3. Commiter vos changements (`git commit -m 'Add some AmazingFeature'`)
4. Pusher sur la branche (`git push origin feature/AmazingFeature`)
5. Ouvrir une Pull Request

📝 License
---------

[](#-license)

Distribué sous la licence MIT. Voir `LICENSE` pour plus d'informations.

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity18

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/426ea5acff415e4380d7a3c95d9bb700b0a9cc6e10a9759e713c01a1b0853674?d=identicon)[AytoKyto](/maintainers/AytoKyto)

---

Top Contributors

[![AytoKyto](https://avatars.githubusercontent.com/u/58691783?v=4)](https://github.com/AytoKyto "AytoKyto (1 commits)")

### Embed Badge

![Health badge](/badges/ayto-reset-password-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/ayto-reset-password-bundle/health.svg)](https://phpackages.com/packages/ayto-reset-password-bundle)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)[beatswitch/lock

A flexible, driver based Acl package for PHP 5.4+

870304.7k2](/packages/beatswitch-lock)[amocrm/amocrm-api-library

amoCRM API Client

182728.5k6](/packages/amocrm-amocrm-api-library)[vonage/jwt

A standalone package for creating JWTs for Vonage APIs

424.1M4](/packages/vonage-jwt)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
