feat: Add Discord routes and configuration for bot key validation

This commit is contained in:
MrEisbear 2025-09-24 19:16:46 -05:00
parent df2242ea44
commit e09463b59c
5 changed files with 41 additions and 1 deletions

View file

@ -9,6 +9,9 @@ class Config:
# General Config # General Config
JWT_KEY = os.getenv('JWT_KEY') JWT_KEY = os.getenv('JWT_KEY')
JWT_EXPIRE = int(os.getenv('JWT_EXPIRATION', 30)) 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 # Database
DB_HOST = os.getenv('DB_HOST') DB_HOST = os.getenv('DB_HOST')

View file

@ -8,8 +8,10 @@ def create_app(config_class=Config):
from .routes.auth_routes import auth_bp from .routes.auth_routes import auth_bp
from .routes.transaction_routes import transactions_bp from .routes.transaction_routes import transactions_bp
from .routes.admin_routes import admin_bp from .routes.admin_routes import admin_bp
from .routes.discord_routes import discord_bp
app.register_blueprint(auth_bp) app.register_blueprint(auth_bp)
app.register_blueprint(transactions_bp) app.register_blueprint(transactions_bp)
app.register_blueprint(admin_bp, url_prefix='/admin') app.register_blueprint(admin_bp, url_prefix='/admin')
app.register_blueprint(discord_bp, url_prefix='/discord')
return app return app

View file

@ -40,4 +40,13 @@ def token_gen(bid):
{"bid": bid, "exp": exptime}, {"bid": bid, "exp": exptime},
jwt_key, jwt_key,
algorithm="HS256") algorithm="HS256")
return token 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 {}

View file

@ -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