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 @@