feat: 增加后端初始化逻辑,自动向数据库注入审计日志菜单与默认权限
This commit is contained in:
@ -142,8 +142,17 @@ def create_app():
|
|||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
print(f"❌ 错误: Audit 模块导入失败: {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:
|
try:
|
||||||
from app.api.v1.warehouse import warehouse_bp
|
from app.api.v1.warehouse import warehouse_bp
|
||||||
|
|||||||
@ -147,3 +147,57 @@ class PermissionService:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
session.rollback()
|
session.rollback()
|
||||||
raise e
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user