import re from flask import Blueprint, request, jsonify from custom_functions.database.user_db import add_user import uuid register_bp = Blueprint("register_bp", __name__) USERNAME_REGEX = re.compile(r"^[A-Za-z0-9_-]+$") PASSWORD_REGEX = re.compile(r"^\S+$") @register_bp.route("/register", methods=["POST"]) def register(): if request.method != "POST": return jsonify({"error": "Method not supported"}), 405 data = request.get_json() # Check required fields for required_field in ["username", "password"]: if required_field not in data: return jsonify({"error": f"Missing required field: {required_field}"}), 400 username = data["username"] password = data["password"] api_key = str(uuid.uuid4()) # Validate username and password if not USERNAME_REGEX.fullmatch(username): return ( jsonify( { "error": "Invalid username. Only letters, numbers, hyphens, and underscores are allowed." } ), 400, ) if not PASSWORD_REGEX.fullmatch(password): return jsonify({"error": "Invalid password. Spaces are not allowed."}), 400 # Attempt to add user if add_user(username, password, api_key): return jsonify({"message": "User successfully registered!"}), 201 else: return jsonify({"error": "User already exists!"}), 409