Fixing wrong reset password procedure
This commit is contained in:
+21
-2
@@ -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 }
|
||||
@@ -222,6 +222,7 @@ class UserPasswordForm(MyBaseForm):
|
||||
filters=[strip_filter]
|
||||
)
|
||||
confirm = PasswordField('Confirmez')
|
||||
|
||||
class UserRegisterForm(MyBaseForm):
|
||||
|
||||
nom = StringField(u'Nom', [
|
||||
|
||||
@@ -33,7 +33,8 @@ L'équipe des <b>JM2L</b>
|
||||
<br>
|
||||
</%def> \
|
||||
<%def name="Forgot(request, User)">
|
||||
<H4>JM2L</H4>
|
||||
<img src="https://jm2l.linux-azur.org/${request.Year}/logo.png" alt="JM2L" />
|
||||
<H4>JM2L</H4>
|
||||
Bonjour ${User.prenom},<br>
|
||||
<br>
|
||||
Vous venez de demander le renvoi de vos identifiants sur le site des JM2L.<br>
|
||||
@@ -42,15 +43,14 @@ Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le
|
||||
<a href="${request.route_url('bymail', hash=User.my_hash)}">Votre lien !</a>
|
||||
<br>
|
||||
N'hésitez pas à l'ajouter à vos liens favoris.
|
||||
<br>
|
||||
<br><br>
|
||||
Vos identifiants de connexion sont les suivants:
|
||||
<br>
|
||||
<b>Login</b>:${User.slug}<br>
|
||||
<b>Password</b>:${User.password}<br>
|
||||
Une fois connecté vous pouvez changer votre mot de passe sur votre fiche.
|
||||
<br>
|
||||
<b>Login</b>:${User.slug}<br /><br />
|
||||
Nous vous proposons de <a href="${request.route_url('bymail', hash=User.my_hash, _query={'reset':'1'})}">changer votre mot de passe !</a>
|
||||
<br />
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
|
||||
@@ -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)}.
|
||||
<URL:${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 :
|
||||
<URL:${request.route_url('bymail', hash=User.my_hash, _query={'reset':'1'})}>.
|
||||
|
||||
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.
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<%inherit file="jm2l:templates/layout.mako"/>
|
||||
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
|
||||
<br />
|
||||
<div class="container">
|
||||
<form class="form-signin" action="/sign/reset" method="post">
|
||||
<h3 class="form-signin-heading">Mot de passe</h3>
|
||||
<hr />
|
||||
<p>Bonjour ${request.user.prenom},</p>
|
||||
<p> Afin de pouvoir maintenir l'accès au site, nous vous proposons de :</p>
|
||||
<strong>Changer votre mot de passe :</strong>
|
||||
<hr />
|
||||
<%
|
||||
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)}
|
||||
<div class="center">
|
||||
<button class="btn btn-large btn-primary btn-block" type="submit">Mettre à jour !</button>
|
||||
</div><hr />
|
||||
</form>
|
||||
<a href="${request.route_url('bymail', hash='plp', _query={'reset':'1'})}">changer votre mot de passe !</a>
|
||||
</div>
|
||||
Reference in New Issue
Block a user