From e09463b59c05e80b2a127c4900d045eec604aa87 Mon Sep 17 00:00:00 2001 From: MrEisbear Date: Wed, 24 Sep 2025 19:16:46 -0500 Subject: [PATCH] feat: Add Discord routes and configuration for bot key validation --- config.py | 3 +++ interbend/__init__.py | 2 ++ interbend/auth.py | 11 ++++++++++- interbend/routes/__init__.py | 0 interbend/routes/discord_routes.py | 26 ++++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 1 deletion(-) delete mode 100644 interbend/routes/__init__.py create mode 100644 interbend/routes/discord_routes.py diff --git a/config.py b/config.py index 9659b73..1acde42 100644 --- a/config.py +++ b/config.py @@ -9,6 +9,9 @@ class Config: # General Config JWT_KEY = os.getenv('JWT_KEY') JWT_EXPIRE = int(os.getenv('JWT_EXPIRATION', 30)) + + # Gets the Key to ensure discord bot requests are being done by the discord bot + BOT_KEY = os.getenv('BOT_KEY') # Database DB_HOST = os.getenv('DB_HOST') diff --git a/interbend/__init__.py b/interbend/__init__.py index bb81e6b..620b6ac 100644 --- a/interbend/__init__.py +++ b/interbend/__init__.py @@ -8,8 +8,10 @@ def create_app(config_class=Config): from .routes.auth_routes import auth_bp from .routes.transaction_routes import transactions_bp from .routes.admin_routes import admin_bp + from .routes.discord_routes import discord_bp app.register_blueprint(auth_bp) app.register_blueprint(transactions_bp) app.register_blueprint(admin_bp, url_prefix='/admin') + app.register_blueprint(discord_bp, url_prefix='/discord') return app \ No newline at end of file diff --git a/interbend/auth.py b/interbend/auth.py index dcf65ae..5ecafc0 100644 --- a/interbend/auth.py +++ b/interbend/auth.py @@ -40,4 +40,13 @@ def token_gen(bid): {"bid": bid, "exp": exptime}, jwt_key, algorithm="HS256") - return token \ No newline at end of file + return token + +def bot_key(input_key): + bot_key = current_app.config['BOT_KEY'] + if input_key != bot_key: + return False + if input_key == bot_key: # Extra Security which doesnt actually add anything but peace of mind. + return True + return "OhShit" # This should never happen?? +# I dont think I should be a programmer, I dont even understand python and prefer golang or java or C#. ANYTHING THAT HAS {} \ No newline at end of file diff --git a/interbend/routes/__init__.py b/interbend/routes/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/interbend/routes/discord_routes.py b/interbend/routes/discord_routes.py new file mode 100644 index 0000000..07091d9 --- /dev/null +++ b/interbend/routes/discord_routes.py @@ -0,0 +1,26 @@ +from flask import Blueprint, make_response +from interbend.db import db, get_user +from interbend.auth import * +import mysql.connector +from werkzeug.security import generate_password_hash, check_password_hash + +discord_bp = Blueprint('discord_bp', __name__) + +@discord_bp.route('/register-id', methods=['POST']) +def register_id(): + data = request.get_json() + bid = data.get('bid') + name = data.get('name') + origin = data.get('origin') + age = data.get('age') + gender = data.get('gender') + bot_key2 = data.get('bot_key') + if bot_key2 != current_app.config['BOT_KEY']: + return jsonify({"error": "Unauthorized"}), 401 + if not bid or not name or not origin or not age or not gender: + return jsonify({"error": "BID, name, origin, age, and gender are required"}), 400 + user = get_user(bid) + if not user: + return jsonify({"error": "User is not registered"}), 404 + # Should the user be automatically registered here? + return jsonify({"error": "Method not implemented"}), 501 \ No newline at end of file