diff --git a/app.py b/app.py
index ad1d551..76fd288 100755
--- a/app.py
+++ b/app.py
@@ -51,7 +51,7 @@ CONFIG_FILE = os.path.join(BASE_DIR, "config.json") # Persistente Konfiguration
USERS_FILE = os.path.join(BASE_DIR, "users.json") # User-Datenbank
HISTORY_FILE = os.path.join(BASE_DIR, "history.json") # Aktivitätsverlauf
-APP_VERSION = "6.2.3"
+APP_VERSION = "6.2.4"
UPLOAD_EXTENSIONS = {".jpg", ".jpeg", ".png", ".mp4"}
app = Flask(__name__)
@@ -731,29 +731,29 @@ def login():
trust_token = request.cookies.get("mfa_trust")
if trust_token:
now = datetime.now()
- # Abgelaufene Einträge bereinigen
- active = [d for d in user.trusted_devices
- if d.get("token") != trust_token or
- datetime.fromisoformat(d["expires"]) > now]
- changed = len(active) != len(user.trusted_devices)
+ treffer = None
+ aktiv = []
for d in user.trusted_devices:
+ try:
+ expires = datetime.fromisoformat(d["expires"])
+ except (ValueError, KeyError, TypeError):
+ continue # kaputter Eintrag fliegt raus
+ if expires <= now:
+ continue # abgelaufener Eintrag fliegt raus
+ aktiv.append(d)
if d.get("token") == trust_token:
- try:
- expires = datetime.fromisoformat(d["expires"])
- if expires > now:
- # Trusted Device gültig → MFA überspringen
- login_user(user)
- add_history_entry("user_login", f"User '{email}' angemeldet (Trusted Device)", email)
- if user.must_change_password:
- return redirect("/change-password")
- return redirect("/admin")
- else:
- pass
- except (ValueError, KeyError):
- pass
- if changed:
- users_data[email]["trusted_devices"] = active
+ treffer = d
+ if len(aktiv) != len(user.trusted_devices):
+ users_data = load_users()
+ users_data.setdefault(email, {})["trusted_devices"] = aktiv
save_users(users_data)
+ if treffer:
+ # Trusted Device gültig → MFA überspringen
+ login_user(user)
+ add_history_entry("user_login", f"User '{email}' angemeldet (Trusted Device)", email)
+ if user.must_change_password:
+ return redirect("/change-password")
+ return redirect("/admin")
session["mfa_user"] = email
session["mfa_password_ok"] = True
return redirect("/mfa/verify")
@@ -828,7 +828,7 @@ def mfa_verify():
resp.set_cookie("mfa_trust", token, max_age=days * 86400,
path="/",
httponly=True, samesite="Lax",
- secure=False)
+ secure=request.is_secure)
return resp
except (ValueError, TypeError):
pass
diff --git a/templates/mfa_verify.html b/templates/mfa_verify.html
index 33b632b..5d4fd05 100644
--- a/templates/mfa_verify.html
+++ b/templates/mfa_verify.html
@@ -46,7 +46,7 @@