from typing import List, Dict # 定义用户信息类型 UserInfo = Dict[str, str | int | List[str]] # 模拟用户数据 MOCK_USERS: List[UserInfo] = [ { 'id': 0, 'password': '123456', 'realName': 'Vben', 'roles': ['super'], 'username': 'vben' }, { 'id': 1, 'password': '123456', 'realName': 'Admin', 'roles': ['admin'], 'username': 'admin', 'homePath': '/workspace' }, { 'id': 2, 'password': '123456', 'realName': 'Jack', 'roles': ['user'], 'username': 'jack', 'homePath': '/analytics' } ] # 模拟代码数据 MOCK_CODES = [ { 'codes': ['AC_100100', 'AC_100110', 'AC_100120', 'AC_100010'], 'username': 'vben' }, { 'codes': ['AC_100010', 'AC_100020', 'AC_100030'], 'username': 'admin' }, { 'codes': ['AC_1000001', 'AC_1000002'], 'username': 'jack' } ] # 模拟菜单数据 dashboard_menus = [ { 'meta': { 'order': -1, 'title': 'page.dashboard.title' }, 'name': 'Dashboard', 'path': '/dashboard', 'redirect': '/analytics', 'children': [ { 'name': 'Analytics', 'path': '/analytics', 'component': '/dashboard/analytics/index', 'meta': { 'affixTab': True, 'title': 'page.dashboard.analytics' } }, { 'name': 'Workspace', 'path': '/workspace', 'component': '/dashboard/workspace/index', 'meta': { 'title': 'page.dashboard.workspace' } } ] } ] def create_demos_menus(role: str): role_with_menus = { 'admin': { 'component': '/demos/access/admin-visible', 'meta': { 'icon': 'mdi:button-cursor', 'title': 'demos.access.adminVisible' }, 'name': 'AccessAdminVisibleDemo', 'path': '/demos/access/admin-visible' }, 'super': { 'component': '/demos/access/super-visible', 'meta': { 'icon': 'mdi:button-cursor', 'title': 'demos.access.superVisible' }, 'name': 'AccessSuperVisibleDemo', 'path': '/demos/access/super-visible' }, 'user': { 'component': '/demos/access/user-visible', 'meta': { 'icon': 'mdi:button-cursor', 'title': 'demos.access.userVisible' }, 'name': 'AccessUserVisibleDemo', 'path': '/demos/access/user-visible' } } return [ { 'meta': { 'icon': 'ic:baseline-view-in-ar', 'keepAlive': True, 'order': 1000, 'title': 'demos.title' }, 'name': 'Demos', 'path': '/demos', 'redirect': '/demos/access', 'children': [ { 'name': 'AccessDemos', 'path': '/demosaccess', 'meta': { 'icon': 'mdi:cloud-key-outline', 'title': 'demos.access.backendPermissions' }, 'redirect': '/demos/access/page-control', 'children': [ { 'name': 'AccessPageControlDemo', 'path': '/demos/access/page-control', 'component': '/demos/access/index', 'meta': { 'icon': 'mdi:page-previous-outline', 'title': 'demos.access.pageAccess' } }, { 'name': 'AccessButtonControlDemo', 'path': '/demos/access/button-control', 'component': '/demos/access/button-control', 'meta': { 'icon': 'mdi:button-cursor', 'title': 'demos.access.buttonControl' } }, { 'name': 'AccessMenuVisible403Demo', 'path': '/demos/access/menu-visible-403', 'component': '/demos/access/menu-visible-403', 'meta': { 'authority': ['no-body'], 'icon': 'mdi:button-cursor', 'menuVisibleWithForbidden': True, 'title': 'demos.access.menuVisible403' } }, role_with_menus[role] ] } ] } ] MOCK_MENUS = [ { 'menus': [*dashboard_menus, *create_demos_menus('super')], 'username': 'vben' }, { 'menus': [*dashboard_menus, *create_demos_menus('admin')], 'username': 'admin' }, { 'menus': [*dashboard_menus, *create_demos_menus('user')], 'username': 'jack' } ]