# -*- coding:utf-8 -*- """ @Created on : 2023/6/6 19:14 @Author: hxl @Des: """ from fastapi import APIRouter from pydantic import BaseModel from helper import respond_to from models import PasswordSecureMode, Drug, StorageForm from models.platform_security import PlatformSecurity router = APIRouter(prefix='/secure') class UpdateSecure(BaseModel): password_secure_mode: int reset_password_duration: int = 0 login_frozen_count: int = 0 login_attempt_duration: int = 0 class CurrentSecure(BaseModel): password_secure_mode: int reset_password_duration: int login_frozen_count: int login_attempt_duration: int class LoginSession: """ 登录用户token信息存储 用于双屏同步登录登出 """ token = "" @router.put('/data', summary='编辑账号安全') async def update(post: UpdateSecure): data = post.dict() password_mode_id = data.pop('password_secure_mode') securities = await PasswordSecureMode.all() for security in securities: security.checked = 1 if security.id == password_mode_id else 0 await security.save(update_fields=['checked']) await PlatformSecurity.filter(id=1).update(**data) return respond_to(desc='更新成功') @router.get('', summary='获取账号安全信息', response_model=CurrentSecure) async def index(): secure = await PlatformSecurity.filter().first().values('reset_password_duration', 'login_frozen_count', 'login_attempt_duration') password_mode = await PasswordSecureMode.get(checked=1).values('id') secure['password_secure_mode'] = password_mode['id'] return respond_to(data=secure) @router.get('password', summary='密码安全下拉选项') async def index_pass(): password_secure_name = await PasswordSecureMode.all().values('name', 'id') return respond_to(data=password_secure_name) @router.delete('', summary='清空药剂') async def update(): await Drug.all().delete() return respond_to() @router.delete('/storage_forms', summary='清空历史模版') async def update(): await StorageForm.all().delete() return respond_to() @router.get('/validate_token', summary='token确认') async def index(): """ 双屏token确认 :return: """ return respond_to(data=LoginSession.token)