File size: 1,286 Bytes
3998131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from fastapi import FastAPI , Request
from fastapi.middleware.cors import CORSMiddleware
from motor.motor_asyncio import AsyncIOMotorClient
from core.config import settings
from db.mongodb import db_instance
from routes import auth 
from contextlib import asynccontextmanager
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse

## CORS Setup 
@asynccontextmanager
async def lifespan(app: FastAPI):
    ## Starting logic 
    db_instance.client = AsyncIOMotorClient(settings.mongodb_url)
    print("Succesfully Connected to MongoDB")

    yield

    db_instance.client.close()
    print("MongoDB connection closed")


app = FastAPI(title="FastAPI Mongo Auth",lifespan=lifespan)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials= True,
    allow_methods = ["*"],
    allow_headers = ["*"],
)
app.include_router(auth.router)

@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request: Request, exc: RequestValidationError):
    print("❌ Validation Error:")
    print(exc.errors())  # This will print in your terminal
    print("📦 Request body:", await request.body())
    return JSONResponse(
        status_code=422,
        content={"detail": exc.errors()}
    )