diff --git a/app.py b/app.py index 64def12..744e2fb 100755 --- a/app.py +++ b/app.py @@ -597,6 +597,8 @@ def mfa_verify(): totp = pyotp.TOTP(user.mfa_secret) if code and totp.verify(code): + login_user(user) + session.pop("mfa_user", None) # Trusted Device speichern wenn gewünscht remember_days = request.form.get("remember") if remember_days: @@ -604,28 +606,22 @@ def mfa_verify(): days = int(remember_days) if 1 <= days <= 365: token = secrets.token_urlsafe(32) - expires = datetime.now().isoformat() - exp_date = datetime.now() - exp_date = exp_date + timedelta(days=days) + exp_date = datetime.now() + timedelta(days=days) expires = exp_date.isoformat() users_data = load_users() trusted = users_data.setdefault(email, {}).setdefault("trusted_devices", []) trusted.append({"token": token, "expires": expires}) save_users(users_data) - resp = redirect("/admin") + add_history_entry("user_login", f"User '{email}' angemeldet (mit MFA, Gerät für {days} Tage gespeichert)", email) + target = "/change-password" if user.must_change_password else "/admin" + resp = redirect(target) resp.set_cookie("mfa_trust", token, max_age=days * 86400, + path="/", httponly=True, samesite="Lax", secure=False) - login_user(user) - session.pop("mfa_user", None) - add_history_entry("user_login", f"User '{email}' angemeldet (mit MFA, Gerät für {days} Tage gespeichert)", email) - if user.must_change_password: - resp = redirect("/change-password") return resp except (ValueError, TypeError): pass - login_user(user) - session.pop("mfa_user", None) add_history_entry("user_login", f"User '{email}' angemeldet (mit MFA)", email) if user.must_change_password: return redirect("/change-password")