v0.1测试
This commit is contained in:
100
backend/routes/auth.py
Normal file
100
backend/routes/auth.py
Normal file
@@ -0,0 +1,100 @@
|
||||
# ===========================================
|
||||
# 班级操行分管理系统 - 后端服务
|
||||
#
|
||||
# 开发者: Canglan
|
||||
# 联系方式: admin@sea-studio.top
|
||||
# 版权归属: Sea Network Technology Studio
|
||||
# 许可证: MIT License
|
||||
#
|
||||
# 版权所有 © Sea Network Technology Studio
|
||||
# ===========================================
|
||||
|
||||
from fastapi import APIRouter, Request, HTTPException
|
||||
from typing import Dict, Any
|
||||
|
||||
from schemas.auth import LoginRequest, ChangePasswordRequest
|
||||
from services.auth_service import AuthService
|
||||
from middleware.permission import get_current_user
|
||||
from utils.response import success_response, error_response, unauthorized_response
|
||||
from utils.logger import get_logger
|
||||
|
||||
router = APIRouter()
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
@router.post("/login")
|
||||
async def login(request: LoginRequest, http_request: Request):
|
||||
"""
|
||||
用户登录
|
||||
"""
|
||||
# 获取客户端IP
|
||||
client_ip = http_request.client.host
|
||||
|
||||
result = await AuthService.login(
|
||||
username=request.username,
|
||||
password=request.password,
|
||||
ip=client_ip
|
||||
)
|
||||
|
||||
if result["success"]:
|
||||
return success_response(
|
||||
data={
|
||||
"token": result["token"],
|
||||
"user_id": result["user_id"],
|
||||
"username": result["username"],
|
||||
"real_name": result["real_name"],
|
||||
"user_type": result["user_type"],
|
||||
"need_change_password": result["need_change_password"],
|
||||
"redirect": result["redirect"]
|
||||
},
|
||||
message="登录成功"
|
||||
)
|
||||
else:
|
||||
return error_response(message=result["message"], code=401)
|
||||
|
||||
|
||||
@router.post("/logout")
|
||||
async def logout(request: Request):
|
||||
"""
|
||||
用户登出
|
||||
"""
|
||||
user = await get_current_user(request)
|
||||
result = await AuthService.logout(user["user_id"])
|
||||
|
||||
if result["success"]:
|
||||
return success_response(message="登出成功")
|
||||
else:
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.post("/change-password")
|
||||
async def change_password(request: Request, req: ChangePasswordRequest):
|
||||
"""
|
||||
修改密码
|
||||
"""
|
||||
user = await get_current_user(request)
|
||||
|
||||
result = await AuthService.change_password(
|
||||
user_id=user["user_id"],
|
||||
old_password=req.old_password,
|
||||
new_password=req.new_password
|
||||
)
|
||||
|
||||
if result["success"]:
|
||||
return success_response(message="密码修改成功,请重新登录")
|
||||
else:
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.get("/me")
|
||||
async def get_current_user_info(request: Request):
|
||||
"""
|
||||
获取当前用户信息
|
||||
"""
|
||||
user = await get_current_user(request)
|
||||
|
||||
# 获取用户详细信息
|
||||
from services.auth_service import AuthService
|
||||
user_info = await AuthService.get_user_info(user["user_id"])
|
||||
|
||||
return success_response(data=user_info)
|
||||
Reference in New Issue
Block a user