You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.3 KiB

# -*- 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)