# app/routes/user_public.py from fastapi import APIRouter, Depends, HTTPException from bson import ObjectId from app.database import get_db from app.models.user import User from app.guards.jwt_guard import get_current_user router = APIRouter(tags=["Users"]) @router.get("/{user_id}") async def get_user_profile_by_id( user_id: str, current_user: dict = Depends(get_current_user) ): """Fetch user profile by ID (auth required).""" if not ObjectId.is_valid(user_id): raise HTTPException(status_code=400, detail="Invalid user ID format") db = await get_db() user = await db.users.find_one({"_id": ObjectId(user_id)}) if not user: raise HTTPException(status_code=404, detail="User not found") return {"success": True, "data": User.format_response(user)}