"Procédure réinitialisation mot de passe"
This commit is contained in:
parent
0d221e6cc3
commit
14d801372f
@ -327,6 +327,39 @@ def update_user_by_id(user_id, login, password, confirm, name, phone, diet):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def reset_password(login, password, confirm):
|
||||||
|
if password != confirm:
|
||||||
|
# Password does not match confirmation
|
||||||
|
print "[+] [Reset password] Password mismatch confirmation"
|
||||||
|
return False
|
||||||
|
check_user = Tetawebapp_users.query.filter_by(mail=login).count()
|
||||||
|
if check_user == 0:
|
||||||
|
# User does not exist
|
||||||
|
print "[+] [Reset password] User does not exist"
|
||||||
|
return False
|
||||||
|
user = Tetawebapp_users.query.filter_by(mail=login).first()
|
||||||
|
if len(password) > 0:
|
||||||
|
# User requested password modification
|
||||||
|
hashed_password = bcrypt.hashpw(password, bcrypt.gensalt())
|
||||||
|
setattr(user, 'password', hashed_password)
|
||||||
|
# We also ask for a new account confirmation
|
||||||
|
link_id = gen_token(20)
|
||||||
|
setattr(user, 'link_id', link_id)
|
||||||
|
try:
|
||||||
|
db.session.add(user)
|
||||||
|
commit = db.session.commit()
|
||||||
|
send_reset_mail(login, link_id)
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
print "[+] Error at reset_password:"
|
||||||
|
print "------------------------------"
|
||||||
|
print "%s" % e.message
|
||||||
|
print "------------------------------"
|
||||||
|
return False
|
||||||
|
if commit != None:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def delete_user(user_id):
|
def delete_user(user_id):
|
||||||
""" Delete user """
|
""" Delete user """
|
||||||
try:
|
try:
|
||||||
@ -599,7 +632,7 @@ def get_roles():
|
|||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
def send_mail(email, link_id):
|
def send_mail(email, link_id):
|
||||||
msg = Message("Confirmation d'inscription au staff THSF",
|
msg = Message("[THSF] Confirmation d'inscription au staff THSF",
|
||||||
sender="dave.null@tetalab.org",
|
sender="dave.null@tetalab.org",
|
||||||
recipients=[email])
|
recipients=[email])
|
||||||
msg.body = "Bonjour,\nVous recevez ce courriel car vous avez souhaité faire partie de l'équipe du staff du THSF.\n\n"
|
msg.body = "Bonjour,\nVous recevez ce courriel car vous avez souhaité faire partie de l'équipe du staff du THSF.\n\n"
|
||||||
@ -615,6 +648,19 @@ def send_mail(email, link_id):
|
|||||||
msg.body += "(Ce mail vous est envoyé par un robot qui n' a pas réussi le test de Turing, inutile de lui répondre)"
|
msg.body += "(Ce mail vous est envoyé par un robot qui n' a pas réussi le test de Turing, inutile de lui répondre)"
|
||||||
mail.send(msg)
|
mail.send(msg)
|
||||||
|
|
||||||
|
def send_reset_mail(email, link_id):
|
||||||
|
msg = Message("[THSF] Confirmation de réinitialisation de votre mot de passe",
|
||||||
|
sender="dave.null@tetalab.org",
|
||||||
|
recipients=[email])
|
||||||
|
msg.body = "Bonjour,\nVous recevez ce courriel car vous avez demandé la réinitialisation de votre mot de passe.\n\n"
|
||||||
|
msg.body += "Pour confirmer votre noueau mot de passe, rendez vous à la page suivante:\n"
|
||||||
|
msg.body += "%s/confirm/%s\n\n" % (str(app.config['DOMAIN_URL']), str(link_id))
|
||||||
|
msg.body += "Si vous n'êtes pas à l'origine de cette demande de réinitialisation, envoyez un email à contact@tetalab.org afin que soient prises les dispositions nécessaires.\n"
|
||||||
|
msg.body += "-- \n"
|
||||||
|
msg.body += "L'équipe d'organisation du THSF\n"
|
||||||
|
msg.body += "(Ce mail vous est envoyé par un robot qui n' a pas réussi le test de Turing, inutile de lui répondre)"
|
||||||
|
mail.send(msg)
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Routes:
|
# Routes:
|
||||||
# -------
|
# -------
|
||||||
@ -765,6 +811,26 @@ def update_account():
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||||
|
|
||||||
|
@app.route("/account/reset/ask", methods=['GET', 'POST'])
|
||||||
|
def ask_reset():
|
||||||
|
""" Ask for password reset page """
|
||||||
|
return render_template('reset_password.html')
|
||||||
|
|
||||||
|
@app.route("/account/reset", methods=['GET', 'POST'])
|
||||||
|
def reset_account():
|
||||||
|
""" Password reset """
|
||||||
|
try:
|
||||||
|
login = request.form.get('login').encode('utf-8')
|
||||||
|
password = request.form.get('password').encode('utf-8')
|
||||||
|
confirm = request.form.get('confirm').encode('utf-8')
|
||||||
|
if reset_password(login, password, confirm):
|
||||||
|
message = "Une confirmation de la réinitialisation de votre mot de passe vous a été envoyé par email"
|
||||||
|
return render_template('login_or_register.html', message=message.decode('utf-8'))
|
||||||
|
message="Erreur lors de la réinitialisation du mot de passe"
|
||||||
|
return render_template('login_or_register.html', message=message.decode('utf-8'))
|
||||||
|
except AttributeError:
|
||||||
|
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||||
|
|
||||||
@app.route("/logout", methods=['GET', 'POST'])
|
@app.route("/logout", methods=['GET', 'POST'])
|
||||||
@check_session
|
@check_session
|
||||||
def logout():
|
def logout():
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<input type='submit' value='Connexion'>
|
<input type='submit' value='Connexion'>
|
||||||
</form>
|
</form>
|
||||||
<p class='note'>
|
<p class='note'>
|
||||||
Mot de passe oublié ? Envoyez une <a href='https://bofh.tetalab.org/?do=newtask&project=2'>demande de réinitialisation de votre mot de passe</a>.
|
Mot de passe oublié ? <a href='/account/reset/ask'>Réinitialisation de votre mot de passe</a>.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
17
templates/reset_password.html
Normal file
17
templates/reset_password.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{% extends "index.html" %}
|
||||||
|
{% block title %}Login{% endblock %}
|
||||||
|
{% block nav %}{% endblock %}
|
||||||
|
{% block main %}
|
||||||
|
<article class='login'>
|
||||||
|
<h3>Réinitialisation de votre mot de passe</h3>
|
||||||
|
<p>Merci de renseigner l'adresse email avec laquelle vous vous êtes enregistré et de saisir votre nouveau mot de passe</p>
|
||||||
|
</article>
|
||||||
|
<article class='left'>
|
||||||
|
<form method='POST' action='/account/reset' onsubmit='return register();'>
|
||||||
|
<label>Adresse mail: </label><input id='reg_mail' name='login' type='text' /><br/>
|
||||||
|
<label>Nouveau mot de passe (8 char min.): </label><input id='reg_password' name='password' type='password' required /><br/>
|
||||||
|
<label>Confirmation mot de passe: </label><input id='reg_confirm' name='confirm' type='password' required /><br/>
|
||||||
|
<input type='submit' value='Réinitialiser mon mot de passe'>
|
||||||
|
</form>
|
||||||
|
</article>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user