DiscordEventLog/src/main.py
SeaswimmerTheFsh 6151e613f9
All checks were successful
Docker Build / Build (push) Successful in 26s
Linter / Lint (3.11) (push) Successful in 40s
fixed an issue with callbacks
2023-11-25 17:47:22 -05:00

53 lines
1.7 KiB
Python

import os
from flask import Flask, render_template, redirect, request, url_for
from flask_discord import DiscordOAuth2Session, requires_authorization, AccessDenied, Unauthorized
from config import load_config
app = Flask(__name__, template_folder="templates")
# This code reads the variables set in the site's 'config.json' file.
config = load_config()
app.secret_key = config['secret_key'].encode('UTF-8')
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = config['dev']
app.config["DISCORD_CLIENT_ID"] = config['discord']['client_id']
app.config["DISCORD_CLIENT_SECRET"] = config['discord']['client_secret']
app.config["DISCORD_REDIRECT_URI"] = config['webroot'] + "/callback/"
app.config["DISCORD_BOT_TOKEN"] = config['discord']['bot_token']
discord = DiscordOAuth2Session(app)
@app.route("/")
def index():
if discord.authorized:
user = discord.fetch_user()
return render_template('index.html', name=config['name'], user=user)
return render_template('index.html', name=config['name'])
@app.route("/me/")
@requires_authorization
def me():
return redirect(url_for(".index"))
@app.route("/login/")
def login():
discord.redirect_uri = request.host + "/callback/"
return discord.create_session(scope=['identify', 'guilds', 'guilds.members.read'])
@app.route("/logout/")
def logout():
discord.revoke()
return redirect(url_for(".index"))
@app.route("/callback/")
def callback():
discord.callback()
return redirect(url_for(".index"))
@app.errorhandler(Unauthorized)
@app.errorhandler(AccessDenied)
def redirect_unauthorized(e): # pylint: disable=unused-argument
return redirect(url_for(".index"))
if __name__ == '__main__':
app.run(host="0.0.0.0", port=config['port'], debug=True)