zhenxun_bot/plugins/web_ui/auth/__init__.py

44 lines
1.4 KiB
Python
Raw Normal View History

2022-06-05 19:51:23 +08:00
import json
2023-04-02 22:57:36 +08:00
from datetime import timedelta
2023-04-01 01:50:34 +08:00
import nonebot
2023-04-02 22:57:36 +08:00
from fastapi import APIRouter, Depends
from fastapi.security import OAuth2PasswordRequestForm
2024-01-22 05:33:41 +08:00
from configs.config import Config
2023-12-30 05:27:45 +08:00
from ..base_model import Result
2023-04-02 22:57:36 +08:00
from ..utils import (
ACCESS_TOKEN_EXPIRE_MINUTES,
create_token,
get_user,
token_data,
token_file,
)
2022-06-05 19:51:23 +08:00
2022-04-04 20:33:37 +08:00
app = nonebot.get_app()
2023-04-02 22:57:36 +08:00
router = APIRouter()
2022-04-04 20:33:37 +08:00
2023-04-01 01:50:34 +08:00
@router.post("/login")
2022-04-04 20:33:37 +08:00
async def login_get_token(form_data: OAuth2PasswordRequestForm = Depends()):
2024-01-22 05:33:41 +08:00
username = Config.get_config("web-ui", "username")
password = Config.get_config("web-ui", "password")
if not username or not password:
2023-04-02 22:57:36 +08:00
return Result.fail("你滴配置文件里用户名密码配置项为空", 998)
2024-01-22 05:33:41 +08:00
if username != form_data.username or password != form_data.password:
return Result.fail("真笨, 账号密码都能记错!", 999)
2023-04-01 01:50:34 +08:00
access_token = create_token(
2024-01-22 05:33:41 +08:00
user=get_user(form_data.username), expires_delta=timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
2023-04-01 01:50:34 +08:00
)
2022-06-05 19:51:23 +08:00
token_data["token"].append(access_token)
if len(token_data["token"]) > 3:
token_data["token"] = token_data["token"][1:]
2023-04-01 01:50:34 +08:00
with open(token_file, "w", encoding="utf8") as f:
2022-06-12 23:16:07 +08:00
json.dump(token_data, f, ensure_ascii=False, indent=4)
2023-04-02 22:57:36 +08:00
return Result.ok(
{"access_token": access_token, "token_type": "bearer"}, "欢迎回家, 欧尼酱!"
)