CabirPoya commited on
Commit
db8925e
·
verified ·
1 Parent(s): 6e05acf

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +37 -0
main.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # main.py
3
+
4
+ from fastapi import FastAPI, Depends, HTTPException
5
+ from fastapi.security import OAuth2PasswordBearer
6
+ from jose import JWTError, jwt
7
+ from sqlalchemy.orm import Session
8
+
9
+ from auth import SECRET_KEY, ALGORITHM
10
+ from database import get_db # فرض بر این که چنین فایلی داری
11
+ from models import User # مدل کاربر
12
+ # از فایل‌های خودت import را تنظیم کن
13
+
14
+ app = FastAPI()
15
+
16
+ # احراز هویت با OAuth2
17
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="login")
18
+
19
+ # بررسی توکن و دریافت کاربر جاری
20
+ async def get_current_user(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
21
+ try:
22
+ payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
23
+ user = db.query(User).filter(User.username == payload["sub"]).first()
24
+ if not user:
25
+ raise HTTPException(status_code=404, detail="User not found")
26
+ return user
27
+ except JWTError:
28
+ raise HTTPException(status_code=401, detail="Invalid token")
29
+
30
+ # مسیر حفاظت‌شده
31
+ @app.get("/users/me")
32
+ async def read_users_me(current_user: User = Depends(get_current_user)):
33
+ return {"username": current_user.username}
34
+
35
+ # اگر فایل دیگری مثل auth_routes نداری، این خط را حذف کن:
36
+ # from routers import auth_routes
37
+ # app.include_router(auth_routes.router)