-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
52 lines (45 loc) · 1.58 KB
/
main.py
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
44
45
46
47
48
49
50
51
from fastapi import FastAPI, HTTPException, Request, status
from fastapi.middleware.cors import CORSMiddleware
from models import models
from config.db import engine
from routers import auth, admin, avocat, search, appointment, rating, availabilities, profile
from utils.jwt import JWT
import json
from config.db import engine
from models import models
app = FastAPI()
models.Base.metadata.create_all(bind=engine)
origins = [
"http://127.0.0.1:5173",
"http://localhost:5173",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["POST", "GET", "PUT", "PATCH", "DELETE"],
allow_headers=["*"],
)
app.include_router(auth.router)
app.include_router(search.router)
app.include_router(rating.router)
app.include_router(appointment.router)
app.include_router(availabilities.router)
app.include_router(profile.router)
@app.middleware("http")
async def auth_middleware(request: Request, call_next):
if request.url.path in ["/auth/login", "/auth/login/google", "/auth/redirect", "/auth/register-user"]:
response = await call_next(request)
return response
token = request.headers.get("Authorization")
token = token.split(" ")[1] if token else None
if token:
try:
payload = JWT.verify_token(token)
request.state.user = payload
except:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid email or password")
response = await call_next(request)
return response
app.include_router(admin.router)
app.include_router(avocat.router)