tanbushi commited on
Commit
1a31c9f
·
1 Parent(s): e894e9c
Files changed (4) hide show
  1. app.py +0 -2
  2. auth.py +30 -0
  3. db/cloudflare.py +2 -2
  4. routers/users_v1.py +5 -4
app.py CHANGED
@@ -7,7 +7,6 @@ from global_state import set
7
  parent_dir = Path(__file__).resolve().parent
8
  set('project_root', parent_dir)
9
 
10
- print('\n\n\n======================')
11
 
12
  from fastapi import FastAPI, HTTPException, Response, Depends
13
  from fastapi.responses import HTMLResponse
@@ -22,7 +21,6 @@ from routers.users_v1 import router as users_router
22
  from dotenv import load_dotenv
23
  import os
24
 
25
- print('\n\n\n======================')
26
  # 当在本地使用.env 文件时加载.env文件
27
  load_dotenv()
28
 
 
7
  parent_dir = Path(__file__).resolve().parent
8
  set('project_root', parent_dir)
9
 
 
10
 
11
  from fastapi import FastAPI, HTTPException, Response, Depends
12
  from fastapi.responses import HTMLResponse
 
21
  from dotenv import load_dotenv
22
  import os
23
 
 
24
  # 当在本地使用.env 文件时加载.env文件
25
  load_dotenv()
26
 
auth.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import Depends, HTTPException, status
2
+ from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
3
+ from global_state import get
4
+ from db.tbs_db import TbsDb
5
+
6
+ # 创建一个 HTTPBearer 实例
7
+ security = HTTPBearer()
8
+
9
+ def get_current_user_id(credentials: HTTPAuthorizationCredentials = Depends(security)):
10
+ token = credentials.credentials
11
+ token = credentials.credentials
12
+ # 假设你有一个函数来验证Token并返回用户ID
13
+ user_id = validate_token(token)
14
+ if user_id is None:
15
+ raise HTTPException(
16
+ status_code=status.HTTP_401_UNAUTHORIZED,
17
+ detail="Invalid authentication credentials",
18
+ headers={"WWW-Authenticate": "Bearer"},
19
+ )
20
+ return user_id
21
+
22
+ def validate_token(token: str):
23
+ db_module_filename = f"{get('project_root')}/db/cloudflare.py"
24
+ query = f"SELECT * FROM users where api_key='{token}'"
25
+ response = TbsDb(db_module_filename, "Cloudflare").get_item(query)
26
+ result = response['result'][0]['results']
27
+ if len(result) == 0:
28
+ return None
29
+ user_id = result[0]['id']
30
+ return user_id
db/cloudflare.py CHANGED
@@ -1,5 +1,5 @@
1
  import requests, os
2
- from dotenv import load_dotenv
3
 
4
  class Cloudflare():
5
  def __init__(self):
@@ -27,6 +27,6 @@ class Cloudflare():
27
  }
28
  response = requests.post(url, headers=headers, json=input)
29
  resp_json = response.json()
30
- print(resp_json)
31
  return resp_json
32
 
 
1
  import requests, os
2
+ # from dotenv import load_dotenv
3
 
4
  class Cloudflare():
5
  def __init__(self):
 
27
  }
28
  response = requests.post(url, headers=headers, json=input)
29
  resp_json = response.json()
30
+
31
  return resp_json
32
 
routers/users_v1.py CHANGED
@@ -1,16 +1,17 @@
1
- from fastapi import APIRouter
2
  from pydantic import BaseModel
3
  import uuid
4
 
5
  from global_state import get
6
  from db.tbs_db import TbsDb
 
7
 
8
  router = APIRouter()
9
 
10
  db_module_filename = f"{get('project_root')}/db/cloudflare.py"
11
 
12
  @router.get("/users")
13
- async def read_users():
14
  query = "SELECT * FROM users"
15
  response = TbsDb(db_module_filename, "Cloudflare").get_list(query)
16
  return response
@@ -22,7 +23,7 @@ class User(BaseModel):
22
  nikename: str = None
23
 
24
  @router.post("/users")
25
- async def create_user(user: User):
26
  username = user.username
27
  password = user.password
28
  email = user.email
@@ -36,7 +37,7 @@ async def create_user(user: User):
36
  return response
37
 
38
  @router.get("/users/{id}")
39
- async def read_user(id:int):
40
  query = f"SELECT * FROM users where id={id}"
41
  response = TbsDb(db_module_filename, "Cloudflare").get_item(query)
42
  return response
 
1
+ from fastapi import APIRouter, Depends
2
  from pydantic import BaseModel
3
  import uuid
4
 
5
  from global_state import get
6
  from db.tbs_db import TbsDb
7
+ from auth import get_current_user_id
8
 
9
  router = APIRouter()
10
 
11
  db_module_filename = f"{get('project_root')}/db/cloudflare.py"
12
 
13
  @router.get("/users")
14
+ async def read_users(current_user_id: int = Depends(get_current_user_id)):
15
  query = "SELECT * FROM users"
16
  response = TbsDb(db_module_filename, "Cloudflare").get_list(query)
17
  return response
 
23
  nikename: str = None
24
 
25
  @router.post("/users")
26
+ async def create_user(user: User, current_user_id: int = Depends(get_current_user_id)):
27
  username = user.username
28
  password = user.password
29
  email = user.email
 
37
  return response
38
 
39
  @router.get("/users/{id}")
40
+ async def read_user(id:int, current_user_id: int = Depends(get_current_user_id)):
41
  query = f"SELECT * FROM users where id={id}"
42
  response = TbsDb(db_module_filename, "Cloudflare").get_item(query)
43
  return response