"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 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):
|
||||
""" Delete user """
|
||||
try:
|
||||
@ -599,7 +632,7 @@ def get_roles():
|
||||
########################################################################
|
||||
|
||||
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",
|
||||
recipients=[email])
|
||||
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)"
|
||||
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:
|
||||
# -------
|
||||
@ -765,6 +811,26 @@ def update_account():
|
||||
except AttributeError:
|
||||
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'])
|
||||
@check_session
|
||||
def logout():
|
||||
|
@ -52,7 +52,7 @@
|
||||
<input type='submit' value='Connexion'>
|
||||
</form>
|
||||
<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>
|
||||
</article>
|
||||
<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