Formulaire personnalisé de réinitialisation de mot de passe #55

Closed
thubrecht wants to merge 3 commits from thubrecht/custom-reset into master
2 changed files with 17 additions and 4 deletions

View file

@ -47,9 +47,9 @@ en plus du site.
### Dans le fichier `settings.py`
- Ajouter `"authens"` dans les [`INSTALLED_APPS`](https://docs.djangoproject.com/en/3.0/ref/settings/#installed-apps).
- Ajouter `"authens"` dans les [`INSTALLED_APPS`](https://docs.djangoproject.com/en/3.2/ref/settings/#installed-apps).
- Ajouter `"authens.backends.ENSCASBackend"` dans les
[`AUTHENTICATION_BACKENDS`](https://docs.djangoproject.com/en/3.0/ref/settings/#authentication-backends).
[`AUTHENTICATION_BACKENDS`](https://docs.djangoproject.com/en/3.2/ref/settings/#authentication-backends).
Si `AUTHENTICATION_BACKENDS` n'apparaît pas dans vos settings, utiliser :
```python
@ -85,11 +85,20 @@ AUTHENS_ALLOW_STAFF = True
- (Optionnel) AuthENS utilise le paramètre Django standard
[`LOGIN_REDIRECT_URL`](https://docs.djangoproject.com/en/3.0/ref/settings/#login-redirect-url)
[`LOGIN_REDIRECT_URL`](https://docs.djangoproject.com/en/3.2/ref/settings/#login-redirect-url)
par défaut pour rediriger l'utilisateurice en cas de connexion réussie.
Il peut être utile de définir ce paramètre.
- (Optionnel) Pour filtrer quels utilisateurs peuvent réinitialiser leur mot de
passe, il est possible de définir un formulaire personnalisé pour remplacer le
formulaire Django standard [`PasswordResetForm`](https://docs.djangoproject.com/en/3.2/topics/auth/default/#django.contrib.auth.forms.PasswordResetForm)
```python
AUTHENS_PASSWORD_RESET_FORM = CustomPwdResetForm
```
## Utilisation
À lire
@ -144,7 +153,7 @@ celui-ci. Les templates à substituer sont :
### Migration depuis `django_cas_ng`
Pour migrer depuis `django_cas_ng`, il est recommandé de faire une
[data migration](https://docs.djangoproject.com/en/3.1/howto/writing-migrations/#migrating-data-between-third-party-apps)
[data migration](https://docs.djangoproject.com/en/3.2/howto/writing-migrations/#migrating-data-between-third-party-apps)
et d'appliquer la fonction `register_cas_account` sur tou⋅tes les
utilisateurices.

View file

@ -3,6 +3,7 @@ from urllib.parse import urlparse, urlunparse
from django.conf import settings
from django.contrib import auth
from django.contrib.auth import views as auth_views
from django.contrib.auth.forms import PasswordResetForm
from django.contrib.messages.views import SuccessMessageMixin
from django.core.exceptions import PermissionDenied
from django.shortcuts import redirect
@ -101,6 +102,9 @@ class PasswordResetView(SuccessMessageMixin, auth_views.PasswordResetView):
subject_template_name = "authens/pwd_reset_subject.txt"
success_url = reverse_lazy("authens:login")
def get_form_class(self):
return getattr(settings, "AUTHENS_PASSWORD_RESET_FORM", PasswordResetForm)
success_message = _(
"Un email de réinitialisation vient d'être envoyé à l'adresse indiquée !"
)