From 42a11abe614e599aeb994bfbd4ca57322c3874b3 Mon Sep 17 00:00:00 2001 From: elpatron Date: Tue, 18 Mar 2025 10:10:17 +0100 Subject: [PATCH] Login --- app.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 870189e..28cf5e4 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -from flask import Flask, render_template, request, jsonify, url_for +from flask import Flask, render_template, request, jsonify, url_for, redirect, session import pandas as pd import os import logging @@ -9,6 +9,7 @@ import requests from collections import defaultdict app = Flask(__name__, static_folder='static') +app.secret_key = 'your_secret_key' # Setzen Sie einen sicheren geheimen Schlüssel für die Session logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) @@ -21,6 +22,9 @@ CSV_FILE = "data/customers.csv" # Lade Umgebungsvariablen load_dotenv() +# Statisches Passwort aus der .env Datei +STATIC_PASSWORD = os.getenv('LOGIN_PASSWORD', 'changeme') + def clean_dataframe(df): """Konvertiert NaN-Werte in None für JSON-Kompatibilität""" return df.replace({np.nan: None}) @@ -48,12 +52,27 @@ def load_data(): logger.error(f"Fehler beim Laden der CSV-Datei: {str(e)}") return None +@app.route('/login', methods=['GET', 'POST']) +def login(): + if request.method == 'POST': + password = request.form.get('password') + if password == STATIC_PASSWORD: + session['logged_in'] = True + return redirect(url_for('index')) + else: + return render_template('login.html', error="Falsches Passwort") + return render_template('login.html') + @app.route('/') def index(): + if not session.get('logged_in'): + return redirect(url_for('login')) return render_template('index.html') @app.route('/search') def search(): + if not session.get('logged_in'): + return redirect(url_for('login')) try: # CSV-Datei laden df = load_data()