diff --git a/src/i18n/langs/en.json b/src/i18n/langs/en.json index bf84b9c3a..0183632e3 100644 --- a/src/i18n/langs/en.json +++ b/src/i18n/langs/en.json @@ -149,7 +149,9 @@ "Rules": "Rule", "Action": "Action", "ipGroupHelpText": "* means match all. Example: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64", - "apply_login_account": "Apply login account" + "apply_login_account": "Apply login account", + "UserIP": "Login IP", + "LoginIP": "Login IP" }, "applications": { "": "", @@ -469,9 +471,8 @@ "ReLoginErr": "Login time has exceeded 5 minutes, please login again" }, "common": { - "BatchProcessing": "Select {Number} items", - "Generate": "Generate", "BatchProcessing": "Batch processing(select {Number} items)", + "Generate": "Generate", "ServerError": "Server Error", "CommunityEdition": "Community Edition", "EnterpriseEdition": "Enterprise Edition", @@ -838,7 +839,16 @@ "MatchIn": "In ...", "RelNot": "Not", "RelOr": "Or", - "Relation": "Relation" + "Relation": "Relation", + "Email": "Email", + "SelectAttrs": "Select attrs", + "MatchResult": "Match results", + "MatchedCount": "Match count", + "IsActive": "Is active", + "LessEqualThan": "Less than or equal to", + "OtherRules": "Other rules", + "BelongTo": "Belong to", + "GreatEqualThan": "Greater than or equal to" }, "dashboard": { "ActiveAsset": "Asset active", @@ -1357,7 +1367,14 @@ "Execution": "Execution history", "AssignedTicketList": "Todo approval", "JobDetail": "Job detail", - "Clouds": "Cloud" + "Clouds": "Cloud", + "Acls": "Acls", + "UserLoginAclCreate": "Create user login acl", + "UserLoginAclUpdate": "Update user login acl", + "UserLoginAclList": "User login acl", + "ConnectMethodAclCreate": "Create connect method acl", + "ConnectMethodAclList": "Connect method acl", + "ConnectMethodAclUpdate": "Update connect method acl" }, "rbac": { "Permissions": "Permissions", @@ -1374,7 +1391,9 @@ "HostDeployment": "Remote host deployment", "TerminalStat": "CPU/MEM/DISK", "DatabasePort": "Database protocol port", - "BasePort": "listening port" + "BasePort": "listening port", + "Endpoint": "Endpoint", + "ConnectMethod": "Connect method" }, "sessions": { "SetToDefaultStorage": "Set to default storage", @@ -2154,4 +2173,4 @@ "PublishStatus": "Publish status", "NoPublished": "Unpublished" } -} +} \ No newline at end of file diff --git a/src/i18n/langs/ja.json b/src/i18n/langs/ja.json index d4cbbcb90..dfd636ce3 100644 --- a/src/i18n/langs/ja.json +++ b/src/i18n/langs/ja.json @@ -149,7 +149,9 @@ "apply_login_user": "ログインユーザーの申請", "login_confirm_user": "登録再確認受付者", "RuleDetail": "ルールの詳細", - "apply_login_account": "ログインアカウントの申請" + "apply_login_account": "ログインアカウントの申請", + "UserIP": "ログインIP", + "LoginIP": "ログインIP" }, "applications": { "": "", @@ -469,9 +471,8 @@ "ReLoginErr": "ログイン時間が 5 分を超えました。もう一度ログインしてください" }, "common": { - "BatchProcessing": "選択 {Number} 項目", - "Generate": "生成", "BatchProcessing": "一括処理(選択 {Number} 項目)", + "Generate": "生成", "ServerError": "サーバーエラー", "RestoreDefault": "デフォルトに戻す", "DownloadCenter": "ダウンロードセンター", @@ -837,7 +838,16 @@ "MatchIn": "以下のいずれかに一致する", "RelNot": "でない", "RelOr": "または", - "Relation": "関係" + "Relation": "関係", + "Email": "Email", + "SelectAttrs": "選擇屬性", + "MatchResult": "マッチ結果", + "MatchedCount": "一致する結果", + "IsActive": "アクティブです", + "LessEqualThan": "以下または等しい", + "OtherRules": "他のルール", + "BelongTo": "所属する", + "GreatEqualThan": "以上または等しい" }, "dashboard": { "TotalJobLog": "ジョブ実行総数", @@ -1352,7 +1362,14 @@ "AppletHostCreate": "リモート アプリケーション発行者を追加する", "Execution": "実行履歴", "JobDetail": "仕事の詳細", - "Clouds": "クラウド プラットフォーム" + "Clouds": "クラウド プラットフォーム", + "Acls": "ファンアクセスコントロール", + "UserLoginAclCreate": "ユーザーログイン制御の作成", + "UserLoginAclUpdate": "ユーザーログイン制御ルールの更新", + "UserLoginAclList": "ユーザーログイン", + "ConnectMethodAclCreate": "接続方式制御の作成", + "ConnectMethodAclList": "接続方式", + "ConnectMethodAclUpdate": "接続方式制御ルールの更新" }, "rbac": { "Permissions": "権限", @@ -1369,7 +1386,9 @@ "HostDeployment": "パブリッシャーの導入", "TerminalStat": "CPU/メモリ/ディスク", "DatabasePort": "データベース プロトコル ポート", - "BasePort": "リスニング ポート" + "BasePort": "リスニング ポート", + "Endpoint": "エンドポイント", + "ConnectMethod": "接続方式" }, "sessions": { "SetToDefaultStorage": "デフォルトストレージに設定", @@ -2146,4 +2165,4 @@ "PublishStatus": "投稿ステータス", "NoPublished": "未発表" } -} +} \ No newline at end of file diff --git a/src/i18n/langs/zh.json b/src/i18n/langs/zh.json index 249f716d7..831565a4a 100644 --- a/src/i18n/langs/zh.json +++ b/src/i18n/langs/zh.json @@ -115,6 +115,10 @@ } }, "acl": { + "CommandFilterACLHelpMsg": "通过命令过滤,您可以控制命令是否可以发送到资产上。根据您设定的规则,某些命令可以被放行,而另一些命令则被禁止。", + "AssetLoginACLHelpMsg": "登录资产时,可以根据用户的登录 IP 和时间段进行审核,判断是否可以登录资产", + "UserLoginACLHelpMsg": "登录系统时,可以根据用户的登录 IP 和时间段进行审核,判断是否可以登录系统", + "ConnectMethodACLHelpMsg": "通过连接方式过滤,您可以控制用户是否可以使用某种连接方式登录到资产上。根据您设定的规则,某些连接方式可以被放行,而另一些连接方式则被禁止。", "LoginIP": "登录 IP", "UserIP": "登录 IP", "apply_login_account": "申请登录账号", @@ -1079,6 +1083,7 @@ }, "perms": { "": "", + "AssetPermissionHelpMsg": "资产授权允许您选择用户和资产,将资产授权给用户以便访问。一旦授权完成,用户便可便捷地浏览这些资产。此外,您还可以设置特定的权限位,以进一步定义用户对资产的权限范围。", "AccountsHelp": "所有账号: 资产上已添加的所有账号;
指定账号:指定资产下账号的用户名;
手动账号: 用户名/密码 登录时手动输入;
同名账号: 与被授权人用户名相同的账号;", "AllAccounts": "所有账号", "AllAccountTip": "资产上已添加的所有账号", @@ -1150,6 +1155,13 @@ }, "route": { "": "", + "Acls": "访问控制", + "UserLoginAclCreate": "创建用户登录控制", + "UserLoginAclList": "用户登录", + "UserLoginAclUpdate": "更新用户登录控制", + "ConnectMethodAclList": "连接方式", + "ConnectMethodAclCreate": "创建连接方式控制", + "ConnectMethodAclUpdate": "更新连接方式控制", "AppletDetail": "远程应用", "AppletHostDetail": "远程应用发布机详情", "AppletHostCreate": "添加远程应用发布机", @@ -1220,7 +1232,7 @@ "CommandExecutions": "命令执行", "CommandFilterCreate": "创建命令过滤器", "CommandFilterDetail": "命令过滤器详情", - "CommandFilterList": "命令过滤", + "CommandFilterList": "命令过滤规则", "CommandFilterRulesCreate": "创建命令过滤器规则", "CommandFilterRulesUpdate": "更新命令过滤器规则", "CommandFilterUpdate": "更新命令过滤器", @@ -1369,7 +1381,8 @@ "uploadZipTips": "请上传 zip 格式的文件", "HostDeployment": "发布机部署", "TerminalStat": "CPU/内存/磁盘", - "Endpoint": "端点" + "Endpoint": "端点", + "ConnectMethod": "连接方式" }, "sessions": { "SetToDefaultStorage": "设置为默认存储", diff --git a/src/icons/svg/unlock.svg b/src/icons/svg/unlock.svg new file mode 100644 index 000000000..8824afb62 --- /dev/null +++ b/src/icons/svg/unlock.svg @@ -0,0 +1 @@ + diff --git a/src/router/console/acls.js b/src/router/console/acls.js new file mode 100644 index 000000000..9e561dc14 --- /dev/null +++ b/src/router/console/acls.js @@ -0,0 +1,227 @@ +import i18n from '@/i18n/i18n' +import empty from '@/layout/empty' + +export default [ + { + path: 'login-asset-acls', + component: empty, + redirect: '', + meta: { + title: i18n.t('route.AssetAclList'), + licenseRequired: true, + app: 'acls', + resource: 'loginassetacl' + }, + children: [ + { + path: '', + name: 'AssetAclList', + component: () => import('@/views/acl/AssetLoginAcl/AssetLoginAclList.vue'), + meta: { title: i18n.t('route.AssetAclList') } + }, + { + path: 'create', + name: 'AssetAclCreate', + component: () => import('@/views/acl/AssetLoginAcl/AssetLoginAclCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetAclCreate') } + }, + { + path: ':id', + name: 'AssetAclDetail', + component: () => import('@/views/acl/AssetLoginAcl/AssetLoginAclDetail/index'), + hidden: true, + meta: { title: i18n.t('route.AssetAclDetail') } + }, + { + path: ':id/update', + name: 'AssetAclUpdate', + component: () => import('@/views/acl/AssetLoginAcl/AssetLoginAclCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetAclUpdate') } + } + ] + }, + { + path: 'cmd-acls', + component: empty, + redirect: '', + meta: { + title: i18n.t('route.CommandFilterAclList'), + app: 'acls', + resource: 'commandfilteracl', + activeMenu: '/console/perms/cmd-acls' + }, + children: [ + // Command Filter ACL + { + path: '', + name: 'CommandFilterAclList', + component: () => import('@/views/acl/CommandAcl/index'), + hidden: true, + meta: { title: i18n.t('route.CommandFilterAclList') } + }, + { + path: 'create', + name: 'CommandFilterAclCreate', + component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclCreateUpdate'), + hidden: true, + meta: { title: i18n.t('route.CommandFilterAclCreate') } + }, + { + path: ':id', + name: 'CommandFilterAclDetail', + component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclDetail/index'), + hidden: true, + meta: { title: i18n.t('route.CommandFilterAclDetail') } + }, + { + path: ':id/update', + name: 'CommandFilterAclUpdate', + component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclCreateUpdate'), + hidden: true, + meta: { title: i18n.t('route.CommandFilterAclUpdate') } + } + ] + }, + { + path: 'cmd-groups', + component: empty, + redirect: '', + meta: { + title: i18n.t('route.CommandGroupList'), + app: 'acls', + resource: 'commandgroup', + activeMenu: '/console/perms/cmd-acls' + }, + hidden: true, + children: [ + // Command Group + { + path: '', + name: 'CommandGroupList', + component: () => import('@/views/acl/CommandAcl/index'), + hidden: true, + meta: { + title: i18n.t('route.CommandGroupList'), + activeMenu: '/console/perms/cmd-acls' + } + }, + { + path: 'create', + name: 'CommandGroupCreate', + component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupCreateUpdate'), + hidden: true, + meta: { + title: i18n.t('route.CommandGroupCreate'), + activeMenu: '/console/perms/cmd-acls' + } + }, + { + path: ':id', + name: 'CommandGroupDetail', + component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupDetail/index'), + hidden: true, + meta: { + title: i18n.t('route.CommandGroupDetail'), + activeMenu: '/console/perms/cmd-acls' + } + }, + { + path: ':id/update', + name: 'CommandGroupUpdate', + component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupCreateUpdate'), + hidden: true, + meta: { + title: i18n.t('route.CommandGroupUpdate'), + activeMenu: '/console/perms/cmd-acls' + } + } + ] + }, + { + path: 'login-acls', + component: empty, + redirect: '', + meta: { + title: i18n.t('route.UserLoginAclList'), + app: 'acls', + resource: 'loginacl' + }, + children: [ + { + path: '', + name: 'UserLoginAclList', + component: () => import('@/views/acl/UserLoginACL/UserLoginACLList.vue'), + meta: { title: i18n.t('route.UserLoginAclList') } + }, + { + path: 'create', + name: 'UserLoginAclCreate', + component: () => import('@/views/acl/UserLoginACL/UserLoginACLCreateUpdate.vue'), + hidden: true, + meta: { + title: i18n.t('route.UserLoginAclCreate') + } + }, + { + path: ':id', + name: 'UserLoginAclDetail', + component: () => import('@/views/acl/UserLoginACL/UserDetail/index'), + hidden: true, + meta: { + title: i18n.t('route.AssetAclDetail'), + app: 'acls', + resource: 'loginacl' + } + }, + { + path: ':id/update', + name: 'UserLoginAclUpdate', + component: () => import('@/views/acl/UserLoginACL/UserLoginACLCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.UserLoginAclUpdate') } + } + ] + }, + { + path: 'connect-method-acls', + component: empty, + redirect: '', + meta: { + title: i18n.t('route.ConnectMethodList'), + licenseRequired: true, + app: 'acls', + resource: 'connectmethodacl' + }, + children: [ + { + path: '', + name: 'ConnectMethodAclList', + component: () => import('@/views/acl/ConnectMethodAcl/ConnectMethodAclList.vue'), + meta: { title: i18n.t('route.ConnectMethodAclList') } + }, + { + path: 'create', + name: 'ConnectMethodAclCreate', + component: () => import('@/views/acl/ConnectMethodAcl/ConnectMethodAclCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.ConnectMethodAclCreate') } + }, + { + path: ':id', + name: 'ConnectMethodAclDetail', + component: () => import('@/views/acl/AssetLoginAcl/AssetLoginAclDetail/index'), + hidden: true, + meta: { title: i18n.t('route.AssetAclDetail') } + }, + { + path: ':id/update', + name: 'ConnectMethodAclUpdate', + component: () => import('@/views/acl/ConnectMethodAcl/ConnectMethodAclCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.ConnectMethodAclUpdate') } + } + ] + } +] diff --git a/src/router/console/index.js b/src/router/console/index.js index 66e1296ae..17f60d7da 100644 --- a/src/router/console/index.js +++ b/src/router/console/index.js @@ -68,12 +68,14 @@ export default { path: '/console/perms', component: empty, name: 'Perms', + alwaysShow: false, meta: { title: i18n.t('route.Perms'), icon: 'permission' }, children: PermsRoute } + ] } diff --git a/src/router/console/perms.js b/src/router/console/perms.js index 8c20d0616..63b5daf30 100644 --- a/src/router/console/perms.js +++ b/src/router/console/perms.js @@ -1,5 +1,6 @@ import i18n from '@/i18n/i18n' import empty from '@/layout/empty' +import ACLRoutes from '@/router/console/acls' export default [ { @@ -39,141 +40,5 @@ export default [ } ] }, - { - path: 'login-asset-acls', - component: empty, - redirect: '', - meta: { - title: i18n.t('route.AssetAclList'), - licenseRequired: true, - app: 'acls', - resource: 'loginassetacl' - }, - children: [ - { - path: '', - name: 'AssetAclList', - component: () => import('@/views/acl/AssetAcl/AssetAclList'), - meta: { title: i18n.t('route.AssetAclList') } - }, - { - path: 'create', - name: 'AssetAclCreate', - component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.AssetAclCreate') } - }, - { - path: ':id', - name: 'AssetAclDetail', - component: () => import('@/views/acl/AssetAcl/AssetAclDetail/index'), - hidden: true, - meta: { title: i18n.t('route.AssetAclDetail') } - }, - { - path: ':id/update', - name: 'AssetAclUpdate', - component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.AssetAclUpdate') } - } - ] - }, - { - path: 'cmd-acls', - component: empty, - redirect: '', - meta: { - title: i18n.t('route.CommandFilterAclList'), - app: 'acls', - resource: 'commandfilteracl', - activeMenu: '/console/perms/cmd-acls' - }, - children: [ - // Command Filter ACL - { - path: '', - name: 'CommandFilterAclList', - component: () => import('@/views/acl/CommandAcl/index'), - hidden: true, - meta: { title: i18n.t('route.CommandFilterAclList') } - }, - { - path: 'create', - name: 'CommandFilterAclCreate', - component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.CommandFilterAclCreate') } - }, - { - path: ':id', - name: 'CommandFilterAclDetail', - component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclDetail/index'), - hidden: true, - meta: { title: i18n.t('route.CommandFilterAclDetail') } - }, - { - path: ':id/update', - name: 'CommandFilterAclUpdate', - component: () => import('@/views/acl/CommandAcl/CommandFilterAcl/CommandFilterAclCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.CommandFilterAclUpdate') } - } - ] - }, - { - path: 'cmd-groups', - component: empty, - redirect: '', - meta: { - title: i18n.t('route.CommandGroupList'), - app: 'acls', - resource: 'commandgroup', - activeMenu: '/console/perms/cmd-acls' - }, - hidden: true, - children: [ - // Command Group - { - path: '', - name: 'CommandGroupList', - component: () => import('@/views/acl/CommandAcl/index'), - hidden: true, - meta: { - title: i18n.t('route.CommandGroupList'), - activeMenu: '/console/perms/cmd-acls' - } - }, - { - path: 'create', - name: 'CommandGroupCreate', - component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupCreateUpdate'), - hidden: true, - meta: { - title: i18n.t('route.CommandGroupCreate'), - activeMenu: '/console/perms/cmd-acls' - } - }, - { - path: ':id', - name: 'CommandGroupDetail', - component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupDetail/index'), - hidden: true, - meta: { - title: i18n.t('route.CommandGroupDetail'), - activeMenu: '/console/perms/cmd-acls' - } - }, - { - path: ':id/update', - name: 'CommandGroupUpdate', - component: () => import('@/views/acl/CommandAcl/CommandGroup/CommandGroupCreateUpdate'), - hidden: true, - meta: { - title: i18n.t('route.CommandGroupUpdate'), - activeMenu: '/console/perms/cmd-acls' - } - } - ] - } + ...ACLRoutes ] diff --git a/src/router/console/sessions.js b/src/router/console/sessions.js index 366adbbc4..6997519c3 100644 --- a/src/router/console/sessions.js +++ b/src/router/console/sessions.js @@ -2,7 +2,6 @@ import i18n from '@/i18n/i18n' import empty from '@/layout/empty' import { BASE_URL } from '@/utils/common' -// Todo: 放到系统设置中 export default [ { path: 'sessions', diff --git a/src/router/console/users.js b/src/router/console/users.js index 5fcb3f206..ca90d6c3b 100644 --- a/src/router/console/users.js +++ b/src/router/console/users.js @@ -44,47 +44,6 @@ export default [ name: 'UserDetail', hidden: true, meta: { title: i18n.t('route.UserDetail') } - }, - { - path: 'user-acl', - component: empty, - redirect: '', - hidden: true, - meta: { - title: i18n.t('route.UserLoginACLList'), - app: 'acls', - resource: 'loginacl' - }, - children: [ - { - path: '', - name: 'UserLoginACLList', - component: () => import('@/views/acl/UserLoginACL/UserLoginACLList'), - hidden: true, - meta: { title: i18n.t('route.UserLoginACLList') } - }, - { - path: 'create', - name: 'UserLoginACLCreate', - component: () => import('@/views/acl/UserLoginACL/UserLoginACLCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.UserLoginACLCreate') } - }, - { - path: ':id', - name: 'UserLoginACLDetail', - component: () => import('@/views/acl/UserLoginACL/UserDetail/index'), - hidden: true, - meta: { title: i18n.t('route.UserLoginACLDetail') } - }, - { - path: ':id/update', - name: 'UserLoginACLUpdate', - component: () => import('@/views/acl/UserLoginACL/UserLoginACLCreateUpdate'), - hidden: true, - meta: { title: i18n.t('route.UserLoginACLUpdate') } - } - ] } ] }, diff --git a/src/utils/startup.js b/src/utils/startup.js index 0110e91b3..3c20d4562 100644 --- a/src/utils/startup.js +++ b/src/utils/startup.js @@ -107,7 +107,10 @@ export async function generatePageRoutes({ to, from, next }) { hidden: true }] // dynamically add accessible routes - Vue.$log.debug('All routes:', accessRoutes) + Vue.$log.debug('All routes:', accessRoutes.reduce((acc, cur) => { + acc[cur.name] = cur + return acc + }, {})) router.addRoutes(accessRoutes) await store.dispatch('permission/generateViewRoutes', { to, from }) diff --git a/src/views/acl/AssetAcl/AssetAclCreateUpdate.vue b/src/views/acl/AssetLoginAcl/AssetLoginAclCreateUpdate.vue similarity index 96% rename from src/views/acl/AssetAcl/AssetAclCreateUpdate.vue rename to src/views/acl/AssetLoginAcl/AssetLoginAclCreateUpdate.vue index 495237b06..5a4c4736f 100644 --- a/src/views/acl/AssetAcl/AssetAclCreateUpdate.vue +++ b/src/views/acl/AssetLoginAcl/AssetLoginAclCreateUpdate.vue @@ -19,11 +19,9 @@ export default { return { initial: { accounts: ['@ALL'], - rules: [ - { - ip_group: ['*'] - } - ] + rules: { + ip_group: ['*'] + } }, fields: [ [this.$t('common.Basic'), ['name', 'priority']], diff --git a/src/views/acl/AssetAcl/AssetAclDetail/Detail.vue b/src/views/acl/AssetLoginAcl/AssetLoginAclDetail/Detail.vue similarity index 100% rename from src/views/acl/AssetAcl/AssetAclDetail/Detail.vue rename to src/views/acl/AssetLoginAcl/AssetLoginAclDetail/Detail.vue diff --git a/src/views/acl/AssetAcl/AssetAclDetail/index.vue b/src/views/acl/AssetLoginAcl/AssetLoginAclDetail/index.vue similarity index 100% rename from src/views/acl/AssetAcl/AssetAclDetail/index.vue rename to src/views/acl/AssetLoginAcl/AssetLoginAclDetail/index.vue diff --git a/src/views/acl/AssetAcl/AssetAclList.vue b/src/views/acl/AssetLoginAcl/AssetLoginAclList.vue similarity index 81% rename from src/views/acl/AssetAcl/AssetAclList.vue rename to src/views/acl/AssetLoginAcl/AssetLoginAclList.vue index 3365fda99..c14c997e5 100644 --- a/src/views/acl/AssetAcl/AssetAclList.vue +++ b/src/views/acl/AssetLoginAcl/AssetLoginAclList.vue @@ -1,5 +1,5 @@ + + diff --git a/src/views/acl/ConnectMethodAcl/ConnectMethodAclList.vue b/src/views/acl/ConnectMethodAcl/ConnectMethodAclList.vue new file mode 100644 index 000000000..6b0b1e1b1 --- /dev/null +++ b/src/views/acl/ConnectMethodAcl/ConnectMethodAclList.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/src/views/acl/UserLoginACL/UserDetail/index.vue b/src/views/acl/UserLoginACL/UserDetail/index.vue index ff826782e..59bc548cb 100644 --- a/src/views/acl/UserLoginACL/UserDetail/index.vue +++ b/src/views/acl/UserLoginACL/UserDetail/index.vue @@ -1,5 +1,5 @@