diff --git a/jm2l/auth.py b/jm2l/auth.py index 95f4407..7a3e836 100644 --- a/jm2l/auth.py +++ b/jm2l/auth.py @@ -6,6 +6,9 @@ from .models import User, DBSession from mako.template import Template from pyramid_mailer import get_mailer from pyramid_mailer.message import Attachment, Message +from .forms import UserPasswordForm +from passlib.hash import argon2 +from security import check_logged import datetime import re @@ -52,13 +55,18 @@ def forgot(request): @view_config(route_name='bymail', renderer="string") def bymail(request): myhash = request.matchdict.get('hash', "") + reset = request.GET.get('reset', False) user = User.by_hash(myhash) if user: user.last_logged=datetime.datetime.now() DBSession.merge(user) headers = remember(request, user.uid) - return HTTPFound(location=request.route_url('jm2l'), - headers=headers) + if reset: + return HTTPFound(location=request.route_url('auth', action='reset'), + headers=headers) + else: + return HTTPFound(location=request.route_url('jm2l'), + headers=headers) else: headers = forget(request) return HTTPFound(location=request.route_url('auth', action='login'), @@ -92,3 +100,14 @@ def sign_in_out(request): headers=headers) +@view_config(route_name='auth', match_param="action=reset", renderer="jm2l:templates/reset_password.mako") +def reset_password(request): + check_logged(request) + form = UserPasswordForm(request.POST, request.user, meta={'csrf_context': request.session}) + if request.method == 'POST' and form.validate(): + request.user.password = argon2.using(rounds=4).hash(form.password.data) + DBSession.merge(request.user) + headers = remember(request, request.user.uid) + return HTTPFound(location=request.route_url('jm2l'), + headers=headers) + return { 'password_form': form } \ No newline at end of file diff --git a/jm2l/forms.py b/jm2l/forms.py index f2441f7..e4c6d48 100644 --- a/jm2l/forms.py +++ b/jm2l/forms.py @@ -222,6 +222,7 @@ class UserPasswordForm(MyBaseForm): filters=[strip_filter] ) confirm = PasswordField('Confirmez') + class UserRegisterForm(MyBaseForm): nom = StringField(u'Nom', [ diff --git a/jm2l/templates/mail_html.mako b/jm2l/templates/mail_html.mako index eed088e..2d5128e 100644 --- a/jm2l/templates/mail_html.mako +++ b/jm2l/templates/mail_html.mako @@ -33,7 +33,8 @@ L'équipe des JM2L
\ <%def name="Forgot(request, User)"> -

JM2L

+JM2L +

JM2L

Bonjour ${User.prenom},

Vous venez de demander le renvoi de vos identifiants sur le site des JM2L.
@@ -42,15 +43,14 @@ Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le Votre lien !
N'hésitez pas à l'ajouter à vos liens favoris. -
+

Vos identifiants de connexion sont les suivants:
-Login:${User.slug}
-Password:${User.password}
-Une fois connecté vous pouvez changer votre mot de passe sur votre fiche. -
+Login:${User.slug}

+Nous vous proposons de changer votre mot de passe ! +

-Pour plus d'information vous pouvez nous envoyer un mail à « contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez +Pour plus d'information vous pouvez nous envoyer un mail à « contact@jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez toujours nous téléphoner au +33 6 52 42 31 37.

diff --git a/jm2l/templates/mail_plain.mako b/jm2l/templates/mail_plain.mako index aba7a3a..7723bbe 100644 --- a/jm2l/templates/mail_plain.mako +++ b/jm2l/templates/mail_plain.mako @@ -32,15 +32,15 @@ Bonjour ${User.pseudo or User.prenom}, Vous venez de demander le renvoi de vos identifiants sur le site des JM2L. Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant : -${request.route_url('bymail', hash=User.my_hash)}. +. N'hésitez pas à l'ajouter à vos liens favoris. Vos identifiants de connexion : Login: ${User.slug} -Password: ${User.password} -Vous êtes connecté : changez votre mot de passe sur votre fiche pour assurer votre sécurité :-) +Nous vous proposons de changer votre mot de passe via le lien : +. Pour plus d'information vous pouvez nous envoyer un message à « contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez toujours nous téléphoner au +33 6 52 42 31 37. diff --git a/jm2l/templates/reset_password.mako b/jm2l/templates/reset_password.mako new file mode 100644 index 0000000..2cba3a2 --- /dev/null +++ b/jm2l/templates/reset_password.mako @@ -0,0 +1,24 @@ +<%inherit file="jm2l:templates/layout.mako"/> +<%namespace name="helpers" file="jm2l:templates/helpers.mako"/> +
+

+
+ +
+

Bonjour ${request.user.prenom},

+

Afin de pouvoir maintenir l'accès au site, nous vous proposons de :

+ Changer votre mot de passe : +
+<% +DicForm ={ + 'password': {'PlaceHolder':u"Nouveau mot de passe", 'class': "input-block-level"}, + 'confirm': {'PlaceHolder':u"Confirmez", 'class': "input-block-level"} + } +%> + ${helpers.DisplayForm(password_form, DicForm)} +
+ +

+
+changer votre mot de passe ! +