From 23c88975ca24331b9ebd089e58541edb7a0f9684 Mon Sep 17 00:00:00 2001 From: Markus Hauschild Date: Thu, 1 Oct 2015 17:06:33 +0200 Subject: [PATCH] Add some error messages and improve edit dialog. --- index.py | 35 +++++++++++++++++++++-------------- templates/edit.html | 3 ++- templates/error.html | 4 ++++ 3 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 templates/error.html diff --git a/index.py b/index.py index cd9a798..f38de95 100755 --- a/index.py +++ b/index.py @@ -23,7 +23,8 @@ class ReadonlyStringField(StringField): class EditForm(Form): user = ReadonlyStringField('Username') - pswd = PasswordField('Password') + pwd1 = PasswordField('Password') + pwd2 = PasswordField('Password (repeat)') submit = SubmitField('Submit') class LoginForm(Form): @@ -50,26 +51,32 @@ def index(): @app.route('/edit', methods=['GET', 'POST']) def edit(): if not isLoggedin(): - return redirect(url_for('index')) + nav = ['login'] + return render_template('error.html', message="You are not logged in. Please log in first.", nav=nav) nav = ['edit', 'logout'] form = EditForm() user = rdb.hget(session['uuid'], 'user') if form.validate_on_submit(): - opwd = rdb.hget(session['uuid'], 'pswd') - npwd = form.pswd.data - l = ldap.initialize(app.config.get('LDAP_URI', 'ldaps://127.0.0.1')) - try: - l.simple_bind_s(user, opwd) - l.passwd_s(user, opwd, npwd) - except ldap.INVALID_CREDENTIALS as e: - # TODO display error message - l.unbind_s() + if form.pwd1.data != form.pwd2.data: + form.pwd1.errors.append("Passwords do not match.") + form.pwd2.errors.append("Passwords do not match.") else: - rdb.hset(session['uuid'], 'pswd', pswd) - # TODO display success message - return redirect(url_for('index')) + opwd = rdb.hget(session['uuid'], 'pswd') + npwd = form.pwd1.data + l = ldap.initialize(app.config.get('LDAP_URI', 'ldaps://127.0.0.1')) + try: + l.simple_bind_s(user, opwd) + l.passwd_s(user, opwd, npwd) + except ldap.INVALID_CREDENTIALS as e: + # TODO display error message + l.unbind_s() + else: + # TODO display success message + rdb.hset(session['uuid'], 'pswd', npwd) + l.unbind_s() + return redirect(url_for('index')) form.user.data = user return render_template('edit.html', form=form, nav=nav) diff --git a/templates/edit.html b/templates/edit.html index 45f86e1..dae6a42 100644 --- a/templates/edit.html +++ b/templates/edit.html @@ -4,7 +4,8 @@
{{ form.hidden_tag() }} {{ render_field(form.user) }} - {{ render_field(form.pswd) }} + {{ render_field(form.pwd1) }} + {{ render_field(form.pwd2) }}
{{ form.submit(class_="btn btn-default") }}
{% endblock %} diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 0000000..c15f81c --- /dev/null +++ b/templates/error.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} +

Error: {{ message }}

+{% endblock %}