feat: 登录验证
This commit is contained in:
parent
fcc5d11804
commit
b1492434a0
|
|
@ -57,7 +57,7 @@ async def lifespan(app: FastAPI):
|
||||||
)
|
)
|
||||||
logger.info("初始化数据库")
|
logger.info("初始化数据库")
|
||||||
# 定时器
|
# 定时器
|
||||||
scheduler.add_job(clear_session, "interval", seconds=5)
|
scheduler.add_job(clear_session, "interval", seconds=30, misfire_grace_time=10)
|
||||||
scheduler.start()
|
scheduler.start()
|
||||||
logger.info("初始化定时器")
|
logger.info("初始化定时器")
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ def create_app():
|
||||||
return {"message": "hello"}
|
return {"message": "hello"}
|
||||||
|
|
||||||
@app.get(
|
@app.get(
|
||||||
"/check_init",
|
"/api/check_init",
|
||||||
tags=["System"],
|
tags=["System"],
|
||||||
description="系统是否初始化",
|
description="系统是否初始化",
|
||||||
response_model=InitStatusResponse,
|
response_model=InitStatusResponse,
|
||||||
|
|
@ -87,7 +87,7 @@ def create_app():
|
||||||
return InitStatusResponse(data=await is_init())
|
return InitStatusResponse(data=await is_init())
|
||||||
|
|
||||||
@app.post(
|
@app.post(
|
||||||
"/init_system",
|
"/api/init_system",
|
||||||
tags=["System"],
|
tags=["System"],
|
||||||
description="系统初始化",
|
description="系统初始化",
|
||||||
response_model=InitStatusResponse,
|
response_model=InitStatusResponse,
|
||||||
|
|
@ -121,7 +121,10 @@ def create_app():
|
||||||
return InitStatusResponse(success=False, message=str(e))
|
return InitStatusResponse(success=False, message=str(e))
|
||||||
|
|
||||||
@app.post(
|
@app.post(
|
||||||
"/login", tags=["User"], description="用户登录", response_model=LoginResponse
|
"/api/login",
|
||||||
|
tags=["User"],
|
||||||
|
description="用户登录",
|
||||||
|
response_model=LoginResponse,
|
||||||
)
|
)
|
||||||
async def login(login_info: LoginRequest):
|
async def login(login_info: LoginRequest):
|
||||||
user = await DB.User.filter(
|
user = await DB.User.filter(
|
||||||
|
|
@ -137,15 +140,27 @@ def create_app():
|
||||||
return LoginResponse(success=False, message="帐号或密码错误")
|
return LoginResponse(success=False, message="帐号或密码错误")
|
||||||
|
|
||||||
@app.post(
|
@app.post(
|
||||||
"/logout", tags=["User"], description="退出登录", response_model=BaseResponse
|
"/api/logout",
|
||||||
|
tags=["User"],
|
||||||
|
description="退出登录",
|
||||||
|
response_model=BaseResponse,
|
||||||
)
|
)
|
||||||
async def logout(token: str):
|
async def logout(token: str):
|
||||||
sessions.pop(token, None)
|
sessions.pop(token, None)
|
||||||
logger.info(sessions)
|
logger.info(sessions)
|
||||||
return BaseResponse()
|
return BaseResponse()
|
||||||
|
|
||||||
|
@app.get(
|
||||||
|
"/api/current_user",
|
||||||
|
tags=["User"],
|
||||||
|
description="当前用户信息",
|
||||||
|
response_model=LoginResponse,
|
||||||
|
)
|
||||||
|
async def current_user(user: DB.User = Depends(get_current_user)):
|
||||||
|
return LoginResponse(data=user.json(del_columns=["password"]))
|
||||||
|
|
||||||
@app.post(
|
@app.post(
|
||||||
"/run", tags=["Flow"], description="执行命令", response_model=BaseResponse
|
"/api/run", tags=["Flow"], description="执行命令", response_model=BaseResponse
|
||||||
)
|
)
|
||||||
async def flow_run(id: int):
|
async def flow_run(id: int):
|
||||||
nodes = []
|
nodes = []
|
||||||
|
|
@ -209,10 +224,8 @@ def create_app():
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
"01K3JHS5HTY78Z4EYWRFW5TA77": {
|
"01K3JHS5HTY78Z4EYWRFW5TA77": {
|
||||||
"cmd": "\n".join([
|
"cmd": "\n".join(["pwd"]),
|
||||||
"pwd"
|
},
|
||||||
]),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
shared = {}
|
shared = {}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,12 @@ class BaseModel(Model):
|
||||||
|
|
||||||
def json(self, del_columns=None):
|
def json(self, del_columns=None):
|
||||||
user_json = dict(self)
|
user_json = dict(self)
|
||||||
|
user_json["create_time"] = (
|
||||||
|
self.create_time.strftime("%Y-%m-%d %H:%M:%S") if self.create_time else ""
|
||||||
|
)
|
||||||
|
user_json["update_time"] = (
|
||||||
|
self.update_time.strftime("%Y-%m-%d %H:%M:%S") if self.update_time else ""
|
||||||
|
)
|
||||||
if del_columns is not None:
|
if del_columns is not None:
|
||||||
for column in del_columns:
|
for column in del_columns:
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,4 @@ class LoginRequest(BaseModel):
|
||||||
return hashlib.md5(self.password.encode()).hexdigest()
|
return hashlib.md5(self.password.encode()).hexdigest()
|
||||||
|
|
||||||
class LoginResponse(BaseResponse):
|
class LoginResponse(BaseResponse):
|
||||||
data: dict | None
|
data: dict | None = None
|
||||||
Loading…
Reference in New Issue