Files
Claude 14d1eb9d89 fix: Resolve registration API 500 error and proxy configuration
- Fixed undefined variable 'db' in register endpoint (renamed to 'database')
- Updated Vite proxy configuration to use Docker container names
- Fixed proxy target from localhost to backend container
- Added host: true to Vite server config for Docker compatibility
- Registration endpoint now works correctly through frontend proxy

All registration functionality is now fully operational:
- Frontend form validation
- API proxy routing
- Backend user creation
- JWT token generation
- MongoDB data persistence

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 12:08:36 +09:00

85 lines
2.8 KiB
Python

from fastapi import APIRouter, HTTPException, Depends, status
from fastapi.security import OAuth2PasswordRequestForm
from app.core.security import create_access_token, get_current_user, get_password_hash
from app.models.user import User, UserCreate
from app.core.config import settings
from app.core.database import get_database
from datetime import datetime
router = APIRouter()
@router.post("/login")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
# TODO: Implement actual authentication
return {
"access_token": create_access_token({"sub": form_data.username}),
"token_type": "bearer"
}
@router.post("/logout")
async def logout(current_user: User = Depends(get_current_user)):
# TODO: Implement logout logic
return {"message": "Logged out successfully"}
@router.post("/refresh")
async def refresh_token(current_user: User = Depends(get_current_user)):
# TODO: Implement token refresh logic
return {
"access_token": create_access_token({"sub": current_user.email}),
"token_type": "bearer"
}
@router.get("/authorize")
async def authorize():
# TODO: Implement OAuth authorization
return {"message": "Authorization endpoint"}
@router.post("/token")
async def token():
# TODO: Implement OAuth token endpoint
return {"message": "Token endpoint"}
@router.post("/register", status_code=status.HTTP_201_CREATED)
async def register(user_data: UserCreate):
"""Register a new user"""
# Get database
database = get_database()
# Check if user already exists
users_collection = database["users"]
existing_user = await users_collection.find_one({"email": user_data.email})
if existing_user:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Email already registered"
)
# Create new user
user_dict = {
"email": user_data.email,
"full_name": user_data.name,
"username": user_data.email.split("@")[0], # Use email prefix as username
"organization": user_data.organization,
"hashed_password": get_password_hash(user_data.password),
"role": "user", # Default role
"is_active": True,
"created_at": datetime.utcnow(),
"updated_at": datetime.utcnow()
}
# Insert user into database
result = await users_collection.insert_one(user_dict)
# Create access token for immediate login
access_token = create_access_token({"sub": user_data.email})
return {
"message": "User registered successfully",
"access_token": access_token,
"token_type": "bearer",
"user": {
"id": str(result.inserted_id),
"email": user_data.email,
"name": user_data.name
}
}