Skip to content
Snippets Groups Projects

Posílání emailů na obnovu hesla

Merged Václav Volhejn requested to merge reset-email into master
All threads resolved!
2 files
+ 25
12
Compare changes
  • Side-by-side
  • Inline

Files

+ 19
10
 
import datetime
 
from flask import render_template, request, g, redirect, url_for, session
from flask import render_template, request, g, redirect, url_for, session
from flask_wtf import FlaskForm
from flask_wtf import FlaskForm
import wtforms
import wtforms
@@ -33,19 +35,26 @@ def login():
@@ -33,19 +35,26 @@ def login():
app.logger.error('Login: Neznámý uživatel <%s>', email)
app.logger.error('Login: Neznámý uživatel <%s>', email)
error = 'Neznámý uživatel.'
error = 'Neznámý uživatel.'
elif form.reset.data:
elif form.reset.data:
# FIXME: Zkontrolovat aktivní požadavek
app.logger.info('Login: Požadavek na změnu hesla pro <%s>', email)
app.logger.info('Login: Požadavek na změnu hesla pro <%s>', email)
token = mo.users.ask_reset_password(user)
link = url_for('reset', token=token)
db.get_session().commit()
try:
min_time_between_resets = datetime.timedelta(minutes=1)
mo.util.send_password_reset_email(user, link)
now = datetime.datetime.now().astimezone()
except RuntimeError as e:
if (user.reset_at is not None
app.logger.error('Login: problém při posílání emailu: {}'.format(e))
and now - user.reset_at < min_time_between_resets):
 
error = 'Poslední požadavek na obnovení hesla byl odeslán příliš nedávno.'
 
else:
 
token = mo.users.ask_reset_password(user)
 
link = url_for('reset', token=token, _external=True)
 
db.get_session().commit()
 
 
try:
 
mo.util.send_password_reset_email(user, link)
 
except RuntimeError as e:
 
app.logger.error('Login: problém při posílání emailu: {}'.format(e))
 
 
app.logger.info('Link: %s', link)
 
return render_template('reset.html')
app.logger.info('Link: %s', link)
return render_template('reset.html')
elif not form.passwd.data or not mo.users.check_password(user, form.passwd.data):
elif not form.passwd.data or not mo.users.check_password(user, form.passwd.data):
app.logger.error('Login: Špatné heslo pro uživatele <%s>', email)
app.logger.error('Login: Špatné heslo pro uživatele <%s>', email)
error = 'Chybné heslo.'
error = 'Chybné heslo.'
Loading