feat: 用户相关接口注释说明
This commit is contained in:
@@ -44,7 +44,9 @@ class Token(BaseModel):
|
|||||||
token_type: str
|
token_type: str
|
||||||
|
|
||||||
|
|
||||||
|
# 添加用户相关的端点接口
|
||||||
def add_user_route(app: FastAPI):
|
def add_user_route(app: FastAPI):
|
||||||
|
# 用户注册接口
|
||||||
@app.post("/registry")
|
@app.post("/registry")
|
||||||
async def _registry(registry_user: RegistryUser, session: AsyncSessionDep):
|
async def _registry(registry_user: RegistryUser, session: AsyncSessionDep):
|
||||||
|
|
||||||
@@ -90,6 +92,7 @@ def add_user_route(app: FastAPI):
|
|||||||
"active_url": active_url
|
"active_url": active_url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 验证用户账号接口
|
||||||
@app.get("/verify")
|
@app.get("/verify")
|
||||||
async def _verify(token: str, session: AsyncSessionDep):
|
async def _verify(token: str, session: AsyncSessionDep):
|
||||||
username = CryptUtils.get_username_from_token(token)
|
username = CryptUtils.get_username_from_token(token)
|
||||||
@@ -116,6 +119,7 @@ def add_user_route(app: FastAPI):
|
|||||||
"message": f"用户 {username} 激活成功"
|
"message": f"用户 {username} 激活成功"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 登录接口
|
||||||
@app.post("/login")
|
@app.post("/login")
|
||||||
@app.post("/token")
|
@app.post("/token")
|
||||||
async def _token(session: AsyncSessionDep, form_data: OAuth2PasswordRequestForm = Depends()):
|
async def _token(session: AsyncSessionDep, form_data: OAuth2PasswordRequestForm = Depends()):
|
||||||
@@ -139,15 +143,18 @@ def add_user_route(app: FastAPI):
|
|||||||
"token": token,
|
"token": token,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 获取用户信息接口
|
||||||
@app.get("/users/me")
|
@app.get("/users/me")
|
||||||
async def _me(current_user: PublicUser = Depends(get_current_user)):
|
async def _me(current_user: PublicUser = Depends(get_current_user)):
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
# 订单查询接口
|
||||||
@app.post("/order")
|
@app.post("/order")
|
||||||
async def _query_order(product_name: str, current_user: PublicUser = Depends(get_current_user)):
|
async def _query_order(product_name: str, current_user: PublicUser = Depends(get_current_user)):
|
||||||
return [product_name]
|
return [product_name]
|
||||||
|
|
||||||
|
|
||||||
|
# 用户登录信息验证处理,验证账号密码通过会返回用户信息,否则返回None
|
||||||
async def authenticate_user(session: AsyncSessionDep, username: str, password: str):
|
async def authenticate_user(session: AsyncSessionDep, username: str, password: str):
|
||||||
query = select(UserModel).where(UserModel.username == username)
|
query = select(UserModel).where(UserModel.username == username)
|
||||||
result = await session.execute(query)
|
result = await session.execute(query)
|
||||||
@@ -166,8 +173,10 @@ async def authenticate_user(session: AsyncSessionDep, username: str, password: s
|
|||||||
return public_user
|
return public_user
|
||||||
|
|
||||||
|
|
||||||
|
# 用于注入token字符串
|
||||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
||||||
|
|
||||||
|
# 当token失效或者不存在时抛出的异常
|
||||||
unauthorized_exception = HTTPException(
|
unauthorized_exception = HTTPException(
|
||||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
detail="The token is invalid or had expired",
|
detail="The token is invalid or had expired",
|
||||||
@@ -175,6 +184,7 @@ unauthorized_exception = HTTPException(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# 获取当前用户信息,通过注入的token来获取当前用户信息,如果token有效则返回用户信息,无效则抛出异常
|
||||||
async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2_scheme)):
|
async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2_scheme)):
|
||||||
try:
|
try:
|
||||||
username = CryptUtils.get_username_from_token(token)
|
username = CryptUtils.get_username_from_token(token)
|
||||||
@@ -190,6 +200,7 @@ async def get_current_user(session: AsyncSessionDep, token: str = Depends(oauth2
|
|||||||
return PublicUser(**user_model.model_dump())
|
return PublicUser(**user_model.model_dump())
|
||||||
|
|
||||||
|
|
||||||
|
# 根据用户名获取用户信息
|
||||||
async def get_user_by_username(username: str, session: AsyncSessionDep):
|
async def get_user_by_username(username: str, session: AsyncSessionDep):
|
||||||
query = (
|
query = (
|
||||||
select(UserModel)
|
select(UserModel)
|
||||||
|
|||||||
Reference in New Issue
Block a user