mini-rbac/backend/controller/common.py

32 lines
970 B
Python
Raw Normal View History

import asyncio
from starlette.websockets import WebSocket
2022-09-11 10:34:18 +00:00
from core.security import generate_token, verify_password
from core.utils import get_system_info
2022-09-11 10:34:18 +00:00
from dbhelper.user import get_user
2022-09-12 07:22:08 +00:00
from schemas import LoginForm, LoginResult, Response
2022-09-11 10:34:18 +00:00
async def login(auth_data: LoginForm) -> Response[LoginResult]:
2022-09-12 15:22:18 +00:00
user_obj = await get_user({"username": auth_data.username, "status__not": 9})
2022-09-11 10:34:18 +00:00
if user_obj:
if verify_password(auth_data.password, user_obj.password):
2022-09-12 07:11:12 +00:00
return Response(
data=LoginResult(
id=user_obj.id, token=generate_token(auth_data.username)
)
)
2022-09-12 15:22:18 +00:00
return Response(code=400, msg="账号或密码错误")
async def websocket(ws: WebSocket):
await ws.accept()
try:
while True:
await asyncio.sleep(1)
await ws.send_json(get_system_info())
except Exception as e:
print("断开了链接", e)
await ws.close()