diff --git a/app.py b/app.py index ab17b93..892c3db 100644 --- a/app.py +++ b/app.py @@ -927,37 +927,54 @@ def admin_users_edit_route(user_id): if not u: abort(404) error = None + ok_msg = None if request.method == "POST": + email = request.form.get("email", "").strip().lower() vorname = request.form.get("vorname", "").strip() nachname = request.form.get("nachname", "").strip() telefon = request.form.get("telefon", "").strip() abteilung = request.form.get("abteilung", "").strip() adresse = request.form.get("adresse", "").strip() - db.update_user_profile(tenant_id, user_id, vorname or None, nachname or None, - telefon or None, abteilung or None, adresse or None) - db.log_audit(tenant_id, session["user_id"], "user_profile_updated", "user", str(user_id), - None, _client_ip()) - u = dict(u) - u.update({"vorname": vorname, "nachname": nachname, "telefon": telefon, - "abteilung": abteilung, "adresse": adresse}) - error = "Gespeichert." - err_html = ("

%s

" % html.escape(error)) if error else "" + if not email or "@" not in email: + error = "Bitte eine gueltige E-Mail-Adresse angeben." + elif db.email_exists_excluding(email, user_id): + error = "Diese E-Mail-Adresse wird bereits von einem anderen Benutzer verwendet." + else: + old_email = u["email"] + if email != old_email: + db.update_user_email(tenant_id, user_id, email) + db.log_audit(tenant_id, session["user_id"], "user_email_changed", "user", str(user_id), + {"alt": old_email, "neu": email}, _client_ip()) + if user_id == session["user_id"]: + session["email"] = email + db.update_user_profile(tenant_id, user_id, vorname or None, nachname or None, + telefon or None, abteilung or None, adresse or None) + db.log_audit(tenant_id, session["user_id"], "user_profile_updated", "user", str(user_id), + None, _client_ip()) + u = dict(u) + u.update({"email": email, "vorname": vorname, "nachname": nachname, "telefon": telefon, + "abteilung": abteilung, "adresse": adresse}) + ok_msg = "Gespeichert." + err_html = "

%s

" % html.escape(error) if error else "" + ok_html = ("

%s

" % html.escape(ok_msg)) if ok_msg else "" body = """

Benutzerdetails

-
%s
-
%s
+
%s%s +
+
Wird sofort als Login-Adresse wirksam. Aenderungen werden im Audit-Log erfasst.
+

Details (optional)

-
-
+
+
-
-
+
+
-
+
Zurueck zur Benutzerverwaltung""" % ( - html.escape(u["email"]), err_html, + err_html, ok_html, html.escape(u["email"]), html.escape(u["vorname"] or ""), html.escape(u["nachname"] or ""), html.escape(u["telefon"] or ""), html.escape(u["abteilung"] or ""), html.escape(u["adresse"] or ""),