diff --git a/app.py b/app.py index da94331..3a80739 100644 --- a/app.py +++ b/app.py @@ -165,8 +165,25 @@ def load_user_data(): if "discord_user" in session: g.user_info = session["discord_user"] g.is_admin = session.get("is_admin", False) - g.guilds = session.get("discord_guilds", []) g.bot_running = bot_status() # Lädt den Bot-Status in g + + # Hole die Liste der Gilden aus der Datenbank + connection = get_db_connection() + cursor = connection.cursor(dictionary=True) + + # Lade die Gilden des Nutzers + user_guilds = session.get("discord_guilds", []) + user_guild_ids = [guild["id"] for guild in user_guilds] + + # Finde nur die Gilden, die auch in der Datenbank existieren + cursor.execute("SELECT guild_id FROM guilds WHERE guild_id IN (%s)" % ','.join(['%s'] * len(user_guild_ids)), user_guild_ids) + existing_guilds = cursor.fetchall() + + # Filtere die Gilden des Nutzers basierend auf der Existenz in der Datenbank + g.guilds = [guild for guild in user_guilds if int(guild["id"]) in {g["guild_id"] for g in existing_guilds}] + + cursor.close() + connection.close() else: # Falls der Benutzer nicht eingeloggt ist, keine Daten setzen g.user_info = None @@ -320,35 +337,13 @@ def server_giveaways(guild_id): @app.route("/user_landing_page") def user_landing_page(): - """Zeigt die gefilterten Gilden für den Benutzer an.""" - if "discord_user" in session: - user_info = session["discord_user"] - user_id = user_info["id"] - - # Verbindung zur Datenbank herstellen - connection = get_db_connection() - cursor = connection.cursor(dictionary=True) - - # Holen der Guilds, bei denen der Benutzer Mitglied ist - cursor.execute(""" - SELECT guild_id - FROM user_data - WHERE user_id = %s - """, (user_id,)) - guild_ids = [row["guild_id"] for row in cursor.fetchall()] - - cursor.close() - connection.close() - - # Filtern der Gilden, sodass nur die Gilden angezeigt werden, bei denen der Benutzer Mitglied ist - user_guilds = [guild for guild in session.get("discord_guilds", []) if int(guild["id"]) in guild_ids] - session['filtered_guilds'] = user_guilds # Gefilterte Gilden in die Session speichern - - return render_template("user_landing_page.html", user_info=user_info) + """Zeigt die globale Benutzerdaten und die Liste der Server an.""" + if g.user_info and "discord_guilds" in session: + guilds = session["discord_guilds"] + return render_template("user_landing_page.html", user_info=g.user_info, guilds=guilds) return redirect(url_for("landing_page")) - @app.route("/global_admin_dashboard") def global_admin_dashboard(): """Globales Admin-Dashboard nur für globale Admins""" diff --git a/templates/user_landing_page.html b/templates/user_landing_page.html index c8cc10f..81c246f 100644 --- a/templates/user_landing_page.html +++ b/templates/user_landing_page.html @@ -15,7 +15,7 @@

Select a server to view your server-specific data.

- {% for guild in session['filtered_guilds'] %} + {% for guild in g.guilds %}
Server Icon