87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
#pp/main.py
|
|
from app.models import User, Character, HomeworkType, Friend, FriendRequest
|
|
from fastapi import FastAPI, Request, Depends
|
|
from fastapi.openapi.docs import get_swagger_ui_html
|
|
from fastapi.openapi.utils import get_openapi
|
|
from app.core.deps import get_current_user
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.security import OAuth2PasswordBearer
|
|
from app.api import admin_auth, admin_users, admin_board
|
|
from app.api import admin_members
|
|
from app.core.config import settings
|
|
import traceback
|
|
|
|
from app.api import user, auth, character, homework, character_homework, dashboard, friend
|
|
|
|
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/login")
|
|
|
|
app = FastAPI(
|
|
title="숙제노기 API",
|
|
description="마비노기 모바일 숙제 관리용 백엔드 API",
|
|
version="0.1.0",
|
|
docs_url="/docs",
|
|
redoc_url=None,
|
|
openapi_url="/openapi.json",
|
|
root_path="/api"
|
|
)
|
|
|
|
# app = FastAPI(
|
|
# docs_url=None,
|
|
# redoc_url=None,
|
|
# openapi_url=None
|
|
# )
|
|
|
|
@app.get("/docs", include_in_schema=False)
|
|
def custom_docs(user=Depends(get_current_user)):
|
|
return get_swagger_ui_html(openapi_url="/openapi.json", title="Sukjenogi API Docs")
|
|
|
|
@app.get("/openapi.json", include_in_schema=False)
|
|
def custom_openapi(user=Depends(get_current_user)):
|
|
return get_openapi(
|
|
title="Sukjenogi API",
|
|
version="0.2",
|
|
routes=app.routes
|
|
)
|
|
|
|
@app.middleware("http")
|
|
async def log_exceptions_middleware(request: Request, call_next):
|
|
try:
|
|
response = await call_next(request)
|
|
return response
|
|
except Exception as exc:
|
|
print("❌ 전역 예외 발생:")
|
|
traceback.print_exc()
|
|
raise
|
|
|
|
origins = [
|
|
"https://sukjenogi.biryu2000.kr", # 프론트 도메인
|
|
"https://sukjenogi.com", # 프론트 도메인
|
|
"https://www.sukjenogi.com", # 프론트 도메인
|
|
]
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
# allow_origins=origins,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(user.router, prefix="/users", tags=["Users"])
|
|
app.include_router(auth.router, prefix="/auth", tags=["Auth"])
|
|
app.include_router(character.router, prefix="/characters", tags=["Characters"])
|
|
app.include_router(homework.router, prefix="/homeworks", tags=["Homeworks"])
|
|
app.include_router(character_homework.router, prefix="/characterHomework", tags=["Character Homeworks"])
|
|
app.include_router(dashboard.router, prefix="/dashboard", tags=["Dashboard"])
|
|
app.include_router(friend.router, prefix="/friends", tags=["Friends"])
|
|
app.include_router(admin_auth.router, prefix=f"{settings.admin_api_prefix}/auth", tags=["admin-auth"])
|
|
app.include_router(admin_users.router, prefix=f"{settings.admin_api_prefix}/users", tags=["admin-users"])
|
|
app.include_router(admin_board.router, prefix=f"{settings.admin_api_prefix}/boards", tags=["admin-boards"])
|
|
app.include_router(admin_members.router, prefix=f"{settings.admin_api_prefix}/members",tags=["admin-members"])
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {"message": "숙제노기 서버가 잘 작동 중입니다."}
|
|
|