modified: app.py
This commit is contained in:
58
app.py
58
app.py
@@ -2,7 +2,7 @@ __version__ = "dev-0.4.6"
|
||||
__all__ = ["Discordbot-chatai-webpanel (Discord)"]
|
||||
__author__ = "SimolZimol"
|
||||
|
||||
from flask import Flask, render_template, redirect, url_for, request, session, jsonify, send_file, flash
|
||||
from flask import Flask, render_template, redirect, url_for, request, session, jsonify, send_file, flash, g
|
||||
from requests_oauthlib import OAuth2Session
|
||||
import os
|
||||
import subprocess
|
||||
@@ -159,6 +159,17 @@ def login():
|
||||
session['oauth_state'] = state
|
||||
return redirect(authorization_url)
|
||||
|
||||
@app.before_request
|
||||
def load_user_data():
|
||||
"""Lädt Benutzerdaten vor jeder Anfrage für geschützte Routen."""
|
||||
if "discord_user" in session:
|
||||
g.user_info = session["discord_user"]
|
||||
g.is_admin = session.get("is_admin", False)
|
||||
else:
|
||||
# Falls der Benutzer nicht eingeloggt ist, keine Daten setzen
|
||||
g.user_info = None
|
||||
g.is_admin = False
|
||||
|
||||
@app.route("/callback")
|
||||
def callback():
|
||||
"""Verarbeitet den OAuth2-Rückruf von Discord."""
|
||||
@@ -194,10 +205,7 @@ def callback():
|
||||
bot_admin_data = cursor.fetchone()
|
||||
|
||||
# Speichere Admin-Rechte in der Session
|
||||
if bot_admin_data and bot_admin_data['global_permission'] >= 8:
|
||||
session['is_admin'] = True
|
||||
else:
|
||||
session['is_admin'] = False
|
||||
session['is_admin'] = bool(bot_admin_data and bot_admin_data['global_permission'] >= 8)
|
||||
|
||||
cursor.close()
|
||||
connection.close()
|
||||
@@ -238,9 +246,8 @@ def user_server_data(guild_id):
|
||||
@app.route("/server_admin_dashboard/<int:guild_id>")
|
||||
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"]
|
||||
if g.user_info:
|
||||
user_id = g.user_info["id"]
|
||||
|
||||
# Überprüfe, ob der Benutzer Admin-Rechte auf dem spezifischen Server hat
|
||||
connection = get_db_connection()
|
||||
@@ -261,13 +268,11 @@ def server_admin_dashboard(guild_id):
|
||||
|
||||
return redirect(url_for("user_landing_page"))
|
||||
|
||||
|
||||
@app.route("/user_dashboard/<int:guild_id>")
|
||||
def user_dashboard(guild_id):
|
||||
"""Serverbasiertes User-Dashboard"""
|
||||
user_info = session.get("discord_user")
|
||||
if user_info:
|
||||
user_id = user_info["id"]
|
||||
if g.user_info:
|
||||
user_id = g.user_info["id"]
|
||||
|
||||
# Hole die serverbezogenen Nutzerdaten
|
||||
connection = get_db_connection()
|
||||
@@ -280,16 +285,15 @@ def user_dashboard(guild_id):
|
||||
connection.close()
|
||||
|
||||
if user_data:
|
||||
return render_template("user_dashboard.html", user_info=user_info, user_data=user_data, guild_id=guild_id)
|
||||
return render_template("user_dashboard.html", user_info=g.user_info, user_data=user_data, guild_id=guild_id)
|
||||
|
||||
return redirect(url_for("user_landing_page"))
|
||||
return redirect(url_for("landing_page"))
|
||||
|
||||
@app.route("/server_giveaways/<int:guild_id>")
|
||||
def server_giveaways(guild_id):
|
||||
"""Serverbasiertes Giveaway-Management"""
|
||||
user_info = session.get("discord_user")
|
||||
if user_info:
|
||||
user_id = user_info["id"]
|
||||
if g.user_info:
|
||||
user_id = g.user_info["id"]
|
||||
|
||||
# Überprüfe, ob der Benutzer Admin-Rechte auf diesem Server hat
|
||||
connection = get_db_connection()
|
||||
@@ -313,26 +317,18 @@ def server_giveaways(guild_id):
|
||||
@app.route("/user_landing_page")
|
||||
def user_landing_page():
|
||||
"""Zeigt die globale Benutzerdaten und die Liste der Server an."""
|
||||
if "discord_user" in session and "discord_guilds" in session:
|
||||
user_info = session["discord_user"]
|
||||
if g.user_info and "discord_guilds" in session:
|
||||
guilds = session["discord_guilds"]
|
||||
|
||||
# Debug-Ausgabe
|
||||
print(f"User Info in Session: {user_info}")
|
||||
print(f"Guilds in Session: {guilds}")
|
||||
|
||||
return render_template("user_landing_page.html", user_info=user_info, guilds=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"""
|
||||
if session.get("is_admin"):
|
||||
user_info = session['discord_user']
|
||||
if g.is_admin:
|
||||
bot_running = bot_status() # Funktion, die den Status des Bots prüft
|
||||
guild_id = None # Stelle sicher, dass guild_id korrekt zugewiesen ist
|
||||
return render_template("global_admin_dashboard.html", user_info=user_info, bot_running=bot_running, guild_id=guild_id)
|
||||
return render_template("global_admin_dashboard.html", user_info=g.user_info, bot_running=bot_running)
|
||||
return redirect(url_for("user_landing_page"))
|
||||
|
||||
@app.route("/logout")
|
||||
@@ -344,14 +340,14 @@ def logout():
|
||||
# Bot Management Routes
|
||||
@app.route("/start_bot")
|
||||
def start():
|
||||
if is_bot_admin():
|
||||
if g.is_admin:
|
||||
start_bot()
|
||||
return redirect(url_for("global_admin_dashboard"))
|
||||
return redirect(url_for("landing_page"))
|
||||
|
||||
@app.route("/stop_bot")
|
||||
def stop():
|
||||
if is_bot_admin():
|
||||
if g.is_admin:
|
||||
stop_bot()
|
||||
return redirect(url_for("global_admin_dashboard"))
|
||||
return redirect(url_for("landing_page"))
|
||||
|
||||
Reference in New Issue
Block a user