Skip to content
Snippets Groups Projects
Commit 4e17e571 authored by Jiří Setnička's avatar Jiří Setnička
Browse files

Zlepšení UX resetování hesla

Při resetu hesla zobrazujeme i email, pro který se nastavuje heslo. Tohle pomůže zvláště
při nastavení prvního hesla. Emailovou adresu tu zobrazíme jen s validním tokenem,
takže bychom ji měli vyzradit jen jejímu vlastníkovi.

Zároveň po resetování hesla provedeme redirect na login formulář s již předvyplněným
emailem.
parent 105913d5
No related branches found
No related tags found
1 merge request!9WIP: Zárodek uživatelské části webu a submitování
...@@ -36,7 +36,7 @@ def after_login(user: db.User, url: Optional[str] = None): ...@@ -36,7 +36,7 @@ def after_login(user: db.User, url: Optional[str] = None):
@app.route('/auth/login', methods=('GET', 'POST')) @app.route('/auth/login', methods=('GET', 'POST'))
def login(): def login():
form = LoginForm() form = LoginForm(email=request.args.get('email'))
if not form.validate_on_submit(): if not form.validate_on_submit():
return render_template('login.html', form=form, error=None) return render_template('login.html', form=form, error=None)
...@@ -116,6 +116,7 @@ def handle_need_login(e): ...@@ -116,6 +116,7 @@ def handle_need_login(e):
class ResetForm(FlaskForm): class ResetForm(FlaskForm):
email = EmailField('E-mail', description='Login pro který se nastavuje nové heslo', render_kw={"disabled": "disabled"})
token = wtforms.HiddenField() token = wtforms.HiddenField()
passwd = wtforms.PasswordField('Nové heslo') passwd = wtforms.PasswordField('Nové heslo')
submit = wtforms.SubmitField('Nastavit heslo') submit = wtforms.SubmitField('Nastavit heslo')
...@@ -128,13 +129,14 @@ def reset(): ...@@ -128,13 +129,14 @@ def reset():
if not token: if not token:
flash('Žádný token pro resetování hesla', 'danger') flash('Žádný token pro resetování hesla', 'danger')
return redirect(url_for('login')) return redirect(url_for('login'))
form = ResetForm(token=token)
ok = form.validate_on_submit() user = mo.users.check_reset_password(token)
user = mo.users.check_reset_password(form.token.data)
if not user: if not user:
flash('Neplatný požadavek na obnovu hesla', 'danger') flash('Neplatný požadavek na obnovu hesla', 'danger')
return redirect(url_for('login')) return redirect(url_for('login'))
form = ResetForm(token=token, email=user.email)
ok = form.validate_on_submit()
if not ok: if not ok:
return render_template('reset.html', form=form) return render_template('reset.html', form=form)
...@@ -158,4 +160,4 @@ def reset(): ...@@ -158,4 +160,4 @@ def reset():
) )
db.get_session().commit() db.get_session().commit()
flash('Nové heslo úspěšně nastaveno, nyní se můžete přihlásit', 'success') flash('Nové heslo úspěšně nastaveno, nyní se můžete přihlásit', 'success')
return redirect(url_for('login')) return redirect(url_for('login', email=user.email))
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<form method="POST" class="form form-horizontal" action=""> <form method="POST" class="form form-horizontal" action="">
{{ form.csrf_token }} {{ form.csrf_token }}
{{ form.token() }} {{ form.token() }}
{{ wtf.form_field(form.email, form_type='horizontal') }}
{{ wtf.form_field(form.passwd, form_type='horizontal') }} {{ wtf.form_field(form.passwd, form_type='horizontal') }}
<div class="btn-group col-lg-offset-2"> <div class="btn-group col-lg-offset-2">
{{ wtf.form_field(form.submit, class="btn btn-primary") }} {{ wtf.form_field(form.submit, class="btn btn-primary") }}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment