feat: 增加后端初始化逻辑,自动向数据库注入审计日志菜单与默认权限

This commit is contained in:
DXC
2026-03-10 12:24:34 +08:00
parent be6575344a
commit e1e74e5983
2 changed files with 64 additions and 1 deletions

View File

@ -142,8 +142,17 @@ def create_app():
except ImportError as e:
print(f"❌ 错误: Audit 模块导入失败: {e}")
# 2.9 初始化审计日志菜单和权限(防重复)
# -----------------------------------------------------
# 2.9 注册库位管理模块 (Warehouse)
try:
from app.services.permission_service import PermissionService
with app.app_context():
PermissionService.init_audit_menu()
except Exception as e:
print(f"⚠️ 审计日志菜单初始化跳过: {e}")
# -----------------------------------------------------
# 2.10 注册库位管理模块 (Warehouse)
# -----------------------------------------------------
try:
from app.api.v1.warehouse import warehouse_bp

View File

@ -147,3 +147,57 @@ class PermissionService:
except Exception as e:
session.rollback()
raise e
@staticmethod
def init_audit_menu():
"""
初始化审计日志菜单和超级管理员权限
防重复:只插入不存在的记录
"""
try:
# 1. 检查并创建审计日志菜单
menu_code = 'system_audit'
existing_menu = SysMenu.query.filter_by(code=menu_code).first()
if not existing_menu:
new_menu = SysMenu(
parent_id=0,
name='审计日志',
code=menu_code,
path='/system/audit',
sort_order=110,
is_visible=True
)
db.session.add(new_menu)
db.session.flush() # 获取新插入的 ID
print(f"✅ 审计日志菜单已创建 (code: {menu_code})")
else:
print(f" 审计日志菜单已存在 (code: {menu_code})")
# 2. 为超级管理员赋予审计日志菜单权限
role_code = 'SUPER_ADMIN'
existing_perm = SysRolePermission.query.filter_by(
role_code=role_code,
target_code=menu_code
).first()
if not existing_perm:
new_perm = SysRolePermission(
role_code=role_code,
target_code=menu_code,
type='menu'
)
db.session.add(new_perm)
print(f"✅ 超级管理员已赋予审计日志权限")
else:
print(f" 超级管理员已拥有审计日志权限")
# 3. 提交
db.session.commit()
return True
except Exception as e:
db.session.rollback()
print(f"❌ 初始化审计日志菜单失败: {str(e)}")
raise e