diff --git a/app/database.py b/app/database.py index 8a78147..27a58c4 100644 --- a/app/database.py +++ b/app/database.py @@ -160,7 +160,7 @@ def add_rfid_id(rfid_id, userid): def update_user(u): #query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id)) - query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=?, ONLYRFID=? WHERE ID=?", (u.name, u.longname, u.email, u.isblack, u.isbaron, u.isshown, u.autoblack, u.onlyrfid ,u.id)) + query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, PASSWORD=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=?, ONLYRFID=? WHERE ID=?", (u.name, u.longname, u.email, u.password, u.isblack, u.isbaron, u.isshown, u.autoblack, u.onlyrfid ,u.id)) set_rfid_to_userid(u.rfid_id, u.id) get_db().commit() diff --git a/app/templates/base.html b/app/templates/base.html index 45ec444..fdaa640 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -29,6 +29,7 @@
Logout
Konsumieren
Personal
+
Einstellungen
{% if user.isbaron %}
Billing
Konsumatverwaltung
diff --git a/app/templates/selfmanagement.html b/app/templates/selfmanagement.html new file mode 100644 index 0000000..1af5931 --- /dev/null +++ b/app/templates/selfmanagement.html @@ -0,0 +1,24 @@ +{% extends "base.html"%} +{% set title = "Konsumentenverwaltung" %} +{% block content %} +

Einstellungen ändern

+ {% if success %} +

{{ success }}

+ {% endif %} +
+ Die Euml ID wird angezeigt wenn du ein unbekanntes RFID Tag an den RFID reader hältst. +
Euml ID (falls mehrere durch ; trennen):

+
+ Falls du nicht in der Liste am touchscreen angezeigt werden willst, musst du hier ein Kreuz setzen. +
Nur RFID-kreuzen
+ +
+ Falls du ein neues Passwort eingibts wird dieses geändert. + Neues Passwort:

+ Neues Passwort wiederholen:

+
+ Du musst für jede Änderung dein aktuelles Passwort eingeben. + Neues Passwort wiederholen:

+ +
+{% endblock %} diff --git a/app/views.py b/app/views.py index e329498..d4ea489 100644 --- a/app/views.py +++ b/app/views.py @@ -153,6 +153,9 @@ def manage_users_edit(name=None): else: u.onlyrfid = False + u2 = get_user_by_id(u.id) + u.password = u2.password + update_user(u) return redirect('/manage_users') @@ -345,6 +348,44 @@ def send_mass_mail(name=None): return render_template('billing_mass_mail.html', user=get_user_by_name(session.get('name'))) +@app.route('/selfmanagement', methods=['GET', 'POST']) +@requires_login +def selfmanagement(): + if request.method == 'POST': + u = get_user_by_name(session.get('name')) + if not bcrypt.checkpw(request.form['password_old'], u.password): + success = "Passwort falsch!" + else: + if ('password1' in request.form) & ('password2' in request.form): + if request.form['password1'] == request.form['password2']: + u.password = bcrypt.hashpw(request.form['password1'], bcrypt.gensalt()) + + u.rfid_id = request.form['rfid_id'] + + if 'onlyrfid' in request.form: + u.onlyrfid = True + else: + u.onlyrfid = False + update_user(u) + success = u'Einstellungen wurden übernommen!' + else: + success = u'Neue Passwörter stimmen nicht überein!' + else: + u.rfid_id = request.form['rfid_id'] + + if 'onlyrfid' in request.form: + u.onlyrfid = True + else: + u.onlyrfid = False + + update_user(u) + success = u'Einstellungen wurden übernommen!' + + return render_template('selfmanagement.html', success=success, user=get_user_by_name(session.get('name'))) + + if request.method == 'GET': + return render_template('selfmanagement.html', user=get_user_by_name(session.get('name'))) + #migrate the db to hashed passwords #@app.route('/hashdb') #@requires_baron