diff --git a/app.py b/app.py index d9b9482..f7f77f3 100644 --- a/app.py +++ b/app.py @@ -189,8 +189,7 @@ def callback(): print(f"Error in OAuth2 callback: {e}") flash("Ein Fehler ist beim Authentifizierungsprozess aufgetreten.", "danger") return redirect(url_for("landing_page")) - - + @app.route("/user_server_data/") def user_server_data(guild_id): """Zeigt die serverbezogenen Nutzerdaten für den ausgewählten Server an.""" @@ -216,6 +215,76 @@ def user_server_data(guild_id): return redirect(url_for("landing_page")) +@app.route("/server_admin_dashboard/") +def server_admin_dashboard(guild_id): + """Serverbasiertes Admin-Dashboard für server-spezifische Admin-Rechte""" + user_info = session.get("discord_user") + if user_info: + user_id = user_info["id"] + + # Überprüfe, ob der Benutzer Admin-Rechte auf dem spezifischen Server hat + connection = get_db_connection() + cursor = connection.cursor(dictionary=True) + + cursor.execute("SELECT permission FROM user_data WHERE user_id = %s AND guild_id = %s", (user_id, guild_id)) + user_data = cursor.fetchone() + + cursor.close() + connection.close() + + if user_data and user_data['permission'] >= 8: + # Benutzer ist Admin auf diesem Server + return render_template("server_admin_dashboard.html", guild_id=guild_id) + + return redirect(url_for("user_landing_page")) + +@app.route("/user_dashboard/") +def user_dashboard(guild_id): + """Serverbasiertes User-Dashboard""" + user_info = session.get("discord_user") + if user_info: + user_id = user_info["id"] + + # Hole die serverbezogenen Nutzerdaten + connection = get_db_connection() + cursor = connection.cursor(dictionary=True) + + cursor.execute("SELECT * FROM user_data WHERE user_id = %s AND guild_id = %s", (user_id, guild_id)) + user_data = cursor.fetchone() + + cursor.close() + connection.close() + + if user_data: + return render_template("user_dashboard.html", user_info=user_info, user_data=user_data, guild_id=guild_id) + + return redirect(url_for("user_landing_page")) + +@app.route("/server_giveaways/") +def server_giveaways(guild_id): + """Serverbasiertes Giveaway-Management""" + user_info = session.get("discord_user") + if user_info: + user_id = user_info["id"] + + # Überprüfe, ob der Benutzer Admin-Rechte auf diesem Server hat + connection = get_db_connection() + cursor = connection.cursor(dictionary=True) + + cursor.execute("SELECT permission FROM user_data WHERE user_id = %s AND guild_id = %s", (user_id, guild_id)) + user_data = cursor.fetchone() + + if user_data and user_data['permission'] >= 8: + # Hole die Giveaways für diesen Server + cursor.execute("SELECT * FROM giveaway_data WHERE guild_id = %s", (guild_id,)) + giveaways = cursor.fetchall() + + cursor.close() + connection.close() + + return render_template("server_giveaways.html", giveaways=giveaways, guild_id=guild_id) + + return redirect(url_for("user_landing_page")) @app.route("/user_landing_page") def user_landing_page(): @@ -232,41 +301,12 @@ def user_landing_page(): return redirect(url_for("landing_page")) - - -@app.route("/server_selection") -def server_selection(): - """Zeigt dem Benutzer eine Liste aller Server an, auf denen er sich befindet und die in der Datenbank vorhanden sind.""" - if "discord_user" in session: - user_info = session["discord_user"] - user_id = user_info["id"] - - connection = get_db_connection() - cursor = connection.cursor(dictionary=True) - - # Abfrage der Gilden, auf denen der Benutzer in der Datenbank Einträge hat - cursor.execute(""" - SELECT DISTINCT user_data.guild_id, guilds.name, guilds.icon - FROM user_data - JOIN guilds ON user_data.guild_id = guilds.guild_id - WHERE user_data.user_id = %s - """, (user_id,)) - guilds = cursor.fetchall() - - cursor.close() - connection.close() - - return render_template("server_selection.html", guilds=guilds) - - return redirect(url_for("login")) - - -@app.route("/admin_dashboard") -def admin_dashboard(): - """Zeigt das Bot-Admin-Dashboard an (nur für globale Admins).""" - if is_bot_admin(): - return render_template("admin_dashboard.html", bot_running=bot_status()) - return redirect(url_for("landing_page")) +@app.route("/global_admin_dashboard") +def global_admin_dashboard(): + """Globales Admin-Dashboard nur für globale Admins""" + if session.get("is_admin"): + return render_template("admin_dashboard.html") + return redirect(url_for("user_landing_page")) @app.route("/server_admin_dashboard/") def server_admin_dashboard(guild_id): diff --git a/templates/server_admin_dashboard.html b/templates/server_admin_dashboard.html new file mode 100644 index 0000000..06a59a8 --- /dev/null +++ b/templates/server_admin_dashboard.html @@ -0,0 +1,11 @@ +{% include 'navigation.html' %} +
+

Admin Dashboard for Server {{ guild_id }}

+

Manage server-specific settings for this guild.

+ +

Manage Giveaways

+ View Giveaways + +

Manage Points

+ Manage Points +
diff --git a/templates/server_giveaways.html b/templates/server_giveaways.html new file mode 100644 index 0000000..4c31693 --- /dev/null +++ b/templates/server_giveaways.html @@ -0,0 +1,29 @@ +{% include 'navigation.html' %} +
+

Giveaways for Server {{ guild_id }}

+ Add Giveaway + + + + + + + + + + + + {% for giveaway in giveaways %} + + + + + + + {% endfor %} + +
NamePlatformWinnerActions
{{ giveaway.name }}{{ giveaway.platform }}{{ giveaway.winner_dc_id }} + Edit + Delete +
+