diff --git a/mo/users.py b/mo/users.py index 6fef5ec9ad8280e6f5bf6693abdb76782885de6e..e87c5de6a7991c4d8110e73230d45a0e43127bb8 100644 --- a/mo/users.py +++ b/mo/users.py @@ -165,6 +165,13 @@ def user_by_uid(uid: int) -> db.User: return db.get_session().query(db.User).get(uid) +password_help = 'Heslo musí mít alespoň 8 znaků. Doporučujeme kombinovat velká a malá písmena a číslice.' + + +def validate_password(passwd: str) -> bool: + return len(passwd) >= 8 + + def set_password(user: db.User, passwd: str): salt = bcrypt.gensalt() hashed = bcrypt.hashpw(passwd.encode('utf-8'), salt) diff --git a/mo/web/auth.py b/mo/web/auth.py index 1185c38e60bb1fafedd20353f55e035972a2434e..f5634d1f88120de8526225bf4ecfeffc39c80834 100644 --- a/mo/web/auth.py +++ b/mo/web/auth.py @@ -127,7 +127,7 @@ def handle_need_login(e): class ResetForm(FlaskForm): email = EmailField('E-mail', description='Účet pro který se nastavuje nové heslo', render_kw={"disabled": "disabled"}) token = wtforms.HiddenField() - passwd = wtforms.PasswordField('Nové heslo', description='Heslo musí mít alespoň 8 znaků. Doporučujeme kombinovat velká a malá písmena a číslice.') + passwd = wtforms.PasswordField('Nové heslo', description=mo.users.password_help) submit = wtforms.SubmitField('Nastavit heslo') cancel = wtforms.SubmitField('Zrušit obnovu hesla') @@ -155,8 +155,8 @@ def reset(): db.get_session().commit() flash('Obnova hesla zrušena', 'warning') return redirect(url_for('login')) - elif len(form.passwd.data) < 8: - flash('Heslo musí být aspoň 8 znaků dlouhé', 'danger') + elif not mo.users.validate_password(form.passwd.data): + flash(mo.users.password_help, 'danger') return render_template('reset.html', form=form) else: mo.users.do_reset_password(user)