181 lines
5.4 KiB
Python
181 lines
5.4 KiB
Python
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'
|
|
}
|
|
] |