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