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> \
<%def name="Forgot(request, User)">
-
-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)}.
+
+