feat: add /register endpoint

This commit is contained in:
2026-02-23 22:27:32 +00:00
parent 96a5bcc9e8
commit 0589b2c8a5

View File

@@ -1,15 +1,39 @@
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request from flask import Flask, jsonify, request
from flask_cors import CORS from flask_cors import CORS
from flask_bcrypt import Bcrypt
from flask_jwt_extended import (
JWTManager,
create_access_token,
jwt_required,
get_jwt_identity
)
from server.stat_gen import StatGen from server.stat_gen import StatGen
from db.database import PostgresConnector
import pandas as pd import pandas as pd
import traceback import traceback
import json import json
app = Flask(__name__) app = Flask(__name__)
db = PostgresConnector()
# Allow for CORS from localhost:5173 # Env Variables
CORS(app, resources={r"/*": {"origins": "http://localhost:5173"}}) load_dotenv()
frontend_url = os.getenv("FRONTEND_URL", "http://localhost:5173")
jwt_secret_key = os.getenv("JWT_SECRET_KEY", "super-secret-change-this")
jwt_access_token_expires = int(os.getenv("JWT_ACCESS_TOKEN_EXPIRES", 1200)) # Default to 20 minutes
# Flask Configuration
CORS(app, resources={r"/*": {"origins": frontend_url}})
app.config["JWT_SECRET_KEY"] = jwt_secret_key
app.config["JWT_ACCESS_TOKEN_EXPIRES"] = jwt_access_token_expires
bcrypt = Bcrypt(app)
jwt = JWTManager(app)
# Global State # Global State
posts_df = pd.read_json('small.jsonl', lines=True) posts_df = pd.read_json('small.jsonl', lines=True)
@@ -17,6 +41,22 @@ with open("topic_buckets.json", "r", encoding="utf-8") as f:
domain_topics = json.load(f) domain_topics = json.load(f)
stat_obj = StatGen(posts_df, domain_topics) stat_obj = StatGen(posts_df, domain_topics)
@app.route('/register', methods=['POST'])
def register_user():
data = request.get_json()
if not data or "username" not in data or "password" not in data:
return jsonify({"error": "Missing username or password"}), 400
username = data["username"]
hashed_password = bcrypt.generate_password_hash(
data["password"]
).decode("utf-8")
print(f"Registered new user: {username}")
return jsonify({"message": f"User '{username}' registered successfully"}), 200
@app.route('/upload', methods=['POST']) @app.route('/upload', methods=['POST'])
def upload_data(): def upload_data():
if "posts" not in request.files or "topics" not in request.files: if "posts" not in request.files or "topics" not in request.files: