diff --git a/app.py b/app.py index d00d336..448340c 100644 --- a/app.py +++ b/app.py @@ -89,7 +89,9 @@ referrer_policy = app.config.get("REFERRER_POLICY") if referrer_policy: talisman_kwargs["referrer_policy"] = referrer_policy -talisman = Talisman(app, **talisman_kwargs) +talisman = Talisman(app, + session_cookie_secure=app.config["SESSION_COOKIE_SECURE"], + **talisman_kwargs) register_heif_opener() # pillow_heif dla HEIC SQLALCHEMY_ECHO = True @@ -270,6 +272,23 @@ def check_password(stored_hash, password_input): return False return False +def set_authorized_cookie(response): + + secure_flag = app.config["SESSION_COOKIE_SECURE"] # wartość z config.py + max_age = app.config.get("AUTH_COOKIE_MAX_AGE", 86400) + print("ENV SESSION_COOKIE_SECURE =", os.environ.get("SESSION_COOKIE_SECURE")) + print("CONFIG SESSION_COOKIE_SECURE =", app.config["SESSION_COOKIE_SECURE"]) + response.set_cookie( + "authorized", + AUTHORIZED_COOKIE_VALUE, + max_age=max_age, + secure=secure_flag, + httponly=True, + samesite="Lax", + path="/" + ) + return response + if app.config["SQLALCHEMY_DATABASE_URI"].startswith("sqlite:///"): db_path = app.config["SQLALCHEMY_DATABASE_URI"].replace("sqlite:///", "", 1) @@ -1111,34 +1130,22 @@ def system_auth(): next_page = request.args.get("next") or url_for("main_page") if is_ip_blocked(ip): - flash( - "Przekroczono limit prób logowania. Dostęp zablokowany na 1 godzinę.", - "danger", - ) + flash("Przekroczono limit prób logowania. Dostęp zablokowany na 1 godzinę.", "danger") return render_template("system_auth.html"), 403 if request.method == "POST": if request.form["password"] == SYSTEM_PASSWORD: reset_failed_attempts(ip) resp = redirect(next_page) - max_age = app.config.get("AUTH_COOKIE_MAX_AGE", 86400) - resp.set_cookie( - "authorized", - AUTHORIZED_COOKIE_VALUE, - max_age=max_age, - secure=app.config["SESSION_COOKIE_SECURE"], - ) - return resp + return set_authorized_cookie(resp) else: register_failed_attempt(ip) if is_ip_blocked(ip): - flash( - "Przekroczono limit prób logowania. Dostęp zablokowany na 1 godzinę.", - "danger", - ) + flash("Przekroczono limit prób logowania. Dostęp zablokowany na 1 godzinę.", "danger") return render_template("system_auth.html"), 403 remaining = attempts_remaining(ip) flash(f"Nieprawidłowe hasło. Pozostało {remaining} prób.", "warning") + return render_template("system_auth.html") @@ -1295,7 +1302,7 @@ def login(): if user and check_password(user.password_hash, request.form["password"]): session.permanent = True login_user(user) - # session["logged"] = True + session.modified = True flash("Zalogowano pomyślnie", "success") return redirect(url_for("main_page")) flash("Nieprawidłowy login lub hasło", "danger")