import dataclasses import flask import flask_login import mgU import database user = flask.Blueprint( name='user_api', import_name=__name__, url_prefix='/user/' ) @user.route('/get_forums') @flask_login.login_required def get_user_forums() -> tuple[flask.Response, int]: user_id: str = flask_login.current_user.get_id() forums: list[mgU.Forum] = database.get_user_forums(int(user_id)) forums_dict = {"forums" : [dataclasses.asdict(forum) for forum in forums]} return flask.jsonify(forums_dict), 200 @user.route('/create', methods=['POST']) def create_user() -> tuple[flask.Response, int]: """ Create a new user account. Expects JSON with 'username' and 'password' fields. """ data = flask.request.get_json() if not data: return flask.jsonify({"error": "No JSON data provided"}), 400 username = data.get('username') password = data.get('password') if not username or not password: return flask.jsonify({"error": "Username and password are required"}), 400 # Validate username length and characters if len(username.strip()) == 0: return flask.jsonify({"error": "Username cannot be empty"}), 400 if len(password) < 6: return flask.jsonify({"error": "Password must be at least 6 characters long"}), 400 # Attempt to create the user new_user = database.create_user(username.strip(), password) if new_user is None: return flask.jsonify({"error": "Username already exists or creation failed"}), 409 # Return the created user (without sensitive data) user_dict = { "id": new_user.id, "name": new_user.name, "message": "User created successfully" } return flask.jsonify(user_dict), 201