Skip to content
Snippets Groups Projects
Commit 9c4d16d4 authored by Martin Mareš's avatar Martin Mareš
Browse files

Změna osobních údajů zapomínala kontrolovat aktuální heslo

*blush*
parent 2f76c127
No related branches found
No related tags found
1 merge request!138Zpracování nedoručenek
......@@ -23,6 +23,7 @@ import mo.rights
import mo.tokens
import mo.users
import mo.util
from mo.util import assert_not_none
from mo.web import app, NeedLoginError
import mo.web.fields as mo_fields
......@@ -183,8 +184,11 @@ def user_settings_personal():
if not form.submit.data:
form.email.data = user.email
if form.validate_on_submit():
ok = True
def process_submit() -> bool:
if not mo.users.check_password(user, assert_not_none(form.current_passwd.data)):
flash('Nesouhlasí aktuální heslo.', 'danger')
return False
if form.new_passwd.data:
app.logger.info(f'Settings: Změněno heslo uživatele #{user.user_id}')
mo.users.set_password(user, form.new_passwd.data)
......@@ -195,10 +199,12 @@ def user_settings_personal():
)
sess.commit()
flash('Heslo změněno.', 'success')
if form.email.data != user.email:
if mo.users.user_by_email(form.email.data) is not None:
if mo.users.user_by_email(assert_not_none(form.email.data)) is not None:
# Tady prosakuje informace o existenci účtu, ale tu prozrazuje i login.
flash('Tuto e-mailovou adresu už používá jiný uživatel.', 'danger')
ok = False
return False
else:
rr = mo.users.new_reg_request(db.RegReqType.change_email, request.remote_addr)
if rr:
......@@ -212,8 +218,10 @@ def user_settings_personal():
else:
app.logger.info('Settings: Rate limit')
flash('Příliš mnoho požadavků na změny e-mailu. Počkejte prosím chvíli a zkuste to znovu.', 'danger')
ok = False
if ok:
return False
return True
if form.validate_on_submit() and process_submit():
return redirect(url_for('user_settings'))
return render_template('settings_change.html', form=form)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment