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)"]
|
__all__ = ["Discordbot-chatai-webpanel (Discord)"]
|
||||||
__author__ = "SimolZimol"
|
__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
|
from requests_oauthlib import OAuth2Session
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
@@ -159,6 +159,17 @@ def login():
|
|||||||
session['oauth_state'] = state
|
session['oauth_state'] = state
|
||||||
return redirect(authorization_url)
|
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")
|
@app.route("/callback")
|
||||||
def callback():
|
def callback():
|
||||||
"""Verarbeitet den OAuth2-Rückruf von Discord."""
|
"""Verarbeitet den OAuth2-Rückruf von Discord."""
|
||||||
@@ -194,10 +205,7 @@ def callback():
|
|||||||
bot_admin_data = cursor.fetchone()
|
bot_admin_data = cursor.fetchone()
|
||||||
|
|
||||||
# Speichere Admin-Rechte in der Session
|
# Speichere Admin-Rechte in der Session
|
||||||
if bot_admin_data and bot_admin_data['global_permission'] >= 8:
|
session['is_admin'] = bool(bot_admin_data and bot_admin_data['global_permission'] >= 8)
|
||||||
session['is_admin'] = True
|
|
||||||
else:
|
|
||||||
session['is_admin'] = False
|
|
||||||
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
connection.close()
|
connection.close()
|
||||||
@@ -238,9 +246,8 @@ def user_server_data(guild_id):
|
|||||||
@app.route("/server_admin_dashboard/<int:guild_id>")
|
@app.route("/server_admin_dashboard/<int:guild_id>")
|
||||||
def server_admin_dashboard(guild_id):
|
def server_admin_dashboard(guild_id):
|
||||||
"""Serverbasiertes Admin-Dashboard für server-spezifische Admin-Rechte"""
|
"""Serverbasiertes Admin-Dashboard für server-spezifische Admin-Rechte"""
|
||||||
user_info = session.get("discord_user")
|
if g.user_info:
|
||||||
if user_info:
|
user_id = g.user_info["id"]
|
||||||
user_id = user_info["id"]
|
|
||||||
|
|
||||||
# Überprüfe, ob der Benutzer Admin-Rechte auf dem spezifischen Server hat
|
# Überprüfe, ob der Benutzer Admin-Rechte auf dem spezifischen Server hat
|
||||||
connection = get_db_connection()
|
connection = get_db_connection()
|
||||||
@@ -261,13 +268,11 @@ def server_admin_dashboard(guild_id):
|
|||||||
|
|
||||||
return redirect(url_for("user_landing_page"))
|
return redirect(url_for("user_landing_page"))
|
||||||
|
|
||||||
|
|
||||||
@app.route("/user_dashboard/<int:guild_id>")
|
@app.route("/user_dashboard/<int:guild_id>")
|
||||||
def user_dashboard(guild_id):
|
def user_dashboard(guild_id):
|
||||||
"""Serverbasiertes User-Dashboard"""
|
"""Serverbasiertes User-Dashboard"""
|
||||||
user_info = session.get("discord_user")
|
if g.user_info:
|
||||||
if user_info:
|
user_id = g.user_info["id"]
|
||||||
user_id = user_info["id"]
|
|
||||||
|
|
||||||
# Hole die serverbezogenen Nutzerdaten
|
# Hole die serverbezogenen Nutzerdaten
|
||||||
connection = get_db_connection()
|
connection = get_db_connection()
|
||||||
@@ -280,16 +285,15 @@ def user_dashboard(guild_id):
|
|||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
if user_data:
|
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>")
|
@app.route("/server_giveaways/<int:guild_id>")
|
||||||
def server_giveaways(guild_id):
|
def server_giveaways(guild_id):
|
||||||
"""Serverbasiertes Giveaway-Management"""
|
"""Serverbasiertes Giveaway-Management"""
|
||||||
user_info = session.get("discord_user")
|
if g.user_info:
|
||||||
if user_info:
|
user_id = g.user_info["id"]
|
||||||
user_id = user_info["id"]
|
|
||||||
|
|
||||||
# Überprüfe, ob der Benutzer Admin-Rechte auf diesem Server hat
|
# Überprüfe, ob der Benutzer Admin-Rechte auf diesem Server hat
|
||||||
connection = get_db_connection()
|
connection = get_db_connection()
|
||||||
@@ -313,26 +317,18 @@ def server_giveaways(guild_id):
|
|||||||
@app.route("/user_landing_page")
|
@app.route("/user_landing_page")
|
||||||
def user_landing_page():
|
def user_landing_page():
|
||||||
"""Zeigt die globale Benutzerdaten und die Liste der Server an."""
|
"""Zeigt die globale Benutzerdaten und die Liste der Server an."""
|
||||||
if "discord_user" in session and "discord_guilds" in session:
|
if g.user_info and "discord_guilds" in session:
|
||||||
user_info = session["discord_user"]
|
|
||||||
guilds = session["discord_guilds"]
|
guilds = session["discord_guilds"]
|
||||||
|
return render_template("user_landing_page.html", user_info=g.user_info, guilds=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 redirect(url_for("landing_page"))
|
return redirect(url_for("landing_page"))
|
||||||
|
|
||||||
@app.route("/global_admin_dashboard")
|
@app.route("/global_admin_dashboard")
|
||||||
def global_admin_dashboard():
|
def global_admin_dashboard():
|
||||||
"""Globales Admin-Dashboard nur für globale Admins"""
|
"""Globales Admin-Dashboard nur für globale Admins"""
|
||||||
if session.get("is_admin"):
|
if g.is_admin:
|
||||||
user_info = session['discord_user']
|
|
||||||
bot_running = bot_status() # Funktion, die den Status des Bots prüft
|
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=g.user_info, bot_running=bot_running)
|
||||||
return render_template("global_admin_dashboard.html", user_info=user_info, bot_running=bot_running, guild_id=guild_id)
|
|
||||||
return redirect(url_for("user_landing_page"))
|
return redirect(url_for("user_landing_page"))
|
||||||
|
|
||||||
@app.route("/logout")
|
@app.route("/logout")
|
||||||
@@ -344,14 +340,14 @@ def logout():
|
|||||||
# Bot Management Routes
|
# Bot Management Routes
|
||||||
@app.route("/start_bot")
|
@app.route("/start_bot")
|
||||||
def start():
|
def start():
|
||||||
if is_bot_admin():
|
if g.is_admin:
|
||||||
start_bot()
|
start_bot()
|
||||||
return redirect(url_for("global_admin_dashboard"))
|
return redirect(url_for("global_admin_dashboard"))
|
||||||
return redirect(url_for("landing_page"))
|
return redirect(url_for("landing_page"))
|
||||||
|
|
||||||
@app.route("/stop_bot")
|
@app.route("/stop_bot")
|
||||||
def stop():
|
def stop():
|
||||||
if is_bot_admin():
|
if g.is_admin:
|
||||||
stop_bot()
|
stop_bot()
|
||||||
return redirect(url_for("global_admin_dashboard"))
|
return redirect(url_for("global_admin_dashboard"))
|
||||||
return redirect(url_for("landing_page"))
|
return redirect(url_for("landing_page"))
|
||||||
|
|||||||
Reference in New Issue
Block a user