diff --git a/src/components/ListTable/formatters/ArrayFormatter.vue b/src/components/ListTable/formatters/ArrayFormatter.vue
new file mode 100644
index 000000000..53e59472f
--- /dev/null
+++ b/src/components/ListTable/formatters/ArrayFormatter.vue
@@ -0,0 +1,18 @@
+
+ {{ cellValue }}
+
+
+
+
+
diff --git a/src/components/ListTable/formatters/index.js b/src/components/ListTable/formatters/index.js
index cdd835644..8fb474e54 100644
--- a/src/components/ListTable/formatters/index.js
+++ b/src/components/ListTable/formatters/index.js
@@ -1,4 +1,5 @@
import DetailFormatter from './DetailFormatter'
+import ArrayFormatter from './ArrayFormatter'
import DisplayFormatter from './DisplayFormatter'
import BooleanFormatter from './ChoicesFormatter'
import ActionsFormatter from './ActionsFormatter'
@@ -19,7 +20,8 @@ export default {
SystemUserFormatter,
ShowKeyFormatter,
DialogDetailFormatter,
- LoadingActionsFormatter
+ LoadingActionsFormatter,
+ ArrayFormatter
}
export {
@@ -32,5 +34,6 @@ export {
SystemUserFormatter,
ShowKeyFormatter,
DialogDetailFormatter,
- LoadingActionsFormatter
+ LoadingActionsFormatter,
+ ArrayFormatter
}
diff --git a/src/i18n/langs/cn.json b/src/i18n/langs/cn.json
index 65b5039ef..c3b8e1a73 100644
--- a/src/i18n/langs/cn.json
+++ b/src/i18n/langs/cn.json
@@ -1,5 +1,27 @@
{
"": "",
+ "acl": {
+ "name": "名称",
+ "username": "用户名",
+ "ip_group": "IP 组",
+ "action": "动作",
+ "priority": "优先级",
+ "date_created": "创建时间",
+ "created_by": "创建者",
+ "asset": "资产信息",
+ "users":"用户信息",
+ "system_user": "系统用户",
+ "username_group":"用户名",
+ "hostname_group":"资产名",
+ "asset_ip_group": "资产IP",
+ "system_users_name_group": "系统用户名称",
+ "system_users_protocol_group": "系统用户协议",
+ "system_users_username_group": "系统用户名",
+ "apply_login_asset": "申请登录资产",
+ "apply_login_system_user": "申请登录系统用户",
+ "apply_login_user": "申请登录用户",
+ "RuleDetail": "规则详情"
+ },
"applications": {
"": "",
"RemoteApp": "远程应用",
@@ -529,7 +551,15 @@
"KubernetesAppPermissionDetail": "Kubernetes授权详情",
"KubernetesAppPermissionUpdate": "更新Kubernetes授权规则",
"KubernetesAppUpdate": "更新Kubernetes",
-
+ "Acl": "访问控制",
+ "UserAclList": "用户登录",
+ "UserAclCreate": "创建用户登录规则",
+ "UserAclUpdate": "更新用户登录规则",
+ "UserAclDetail": "用户登录规则详情",
+ "AssetAclList": "登录资产",
+ "AssetAclCreate": "创建资产登录规则",
+ "AssetAclUpdate": "更新资产登录规则",
+ "AssetAclDetail": "资产登录规则详情",
"DomainCreate": "创建网域",
"DomainDetail": "网域详情",
"DomainList": "网域列表",
diff --git a/src/i18n/langs/en.json b/src/i18n/langs/en.json
index 926f86efd..8413a1416 100644
--- a/src/i18n/langs/en.json
+++ b/src/i18n/langs/en.json
@@ -1,5 +1,26 @@
{
"": "",
+ "acl": {
+ "name": "Name",
+ "username": "Username",
+ "ip_group": "IP group",
+ "action": "Action",
+ "priority": "Priority",
+ "date_created": "Date created",
+ "created_by": "Created by",
+ "asset": "Asset",
+ "system_user": "System user",
+ "username_group":"Username group",
+ "hostname_group":"Hostname group",
+ "asset_ip_group": "Asset ip group",
+ "system_users_name_group": "Systemusers name group",
+ "system_users_protocol_group": "Systemusers protocol group",
+ "system_users_username_group": "systemusers username group",
+ "apply_login_asset": "Apply login asset",
+ "apply_login_system_user": "Apply login system user",
+ "apply_login_user": "Apply login user",
+ "RuleDetail": "Rule detail"
+ },
"applications": {
"": "",
"RemoteApp": "Remote app",
@@ -527,6 +548,15 @@
"KubernetesAppPermissionDetail": "Kubernetes permissions detail",
"KubernetesAppPermissionUpdate": "Kubernetes permissions update",
"KubernetesAppUpdate": "Kubernetes app update",
+ "Acl": "Access control",
+ "UserAclList": "User acl list",
+ "UserAclCreate": "User acl create",
+ "UserAclUpdate": "User acl update",
+ "UserAclDetail": "User acl detail",
+ "AssetAclList": "Asset acl list",
+ "AssetAclCreate": "Asset acl create",
+ "AssetAclUpdate": "Asset acl update",
+ "AssetAclDetail": "Asset acl detail",
"DomainCreate": "Domain create",
"DomainDetail": "Domain detail",
"DomainList": "Domains",
diff --git a/src/router/acl.js b/src/router/acl.js
new file mode 100644
index 000000000..fc7f816b8
--- /dev/null
+++ b/src/router/acl.js
@@ -0,0 +1,42 @@
+import i18n from '@/i18n/i18n'
+import empty from '@/layout/empty'
+export default [
+ {
+ path: 'asset-acl',
+ component: empty,
+ redirect: '',
+ meta: {
+ title: i18n.t('route.AssetAclList'),
+ licenseRequired: true
+ },
+ children: [
+ {
+ path: '',
+ name: 'AssetAclList',
+ component: () => import('@/views/acl/AssetAcl/AssetAclList'),
+ meta: { title: i18n.t('route.AssetAclList'), activeMenu: '/acl/asset-acl' }
+ },
+ {
+ path: 'create',
+ name: 'AssetAclCreate',
+ component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
+ meta: { title: i18n.t('route.AssetAclCreate'), activeMenu: '/acl/assetAcl' },
+ hidden: true
+ },
+ {
+ path: ':id',
+ name: 'AssetAclDetail',
+ component: () => import('@/views/acl/AssetAcl/AssetAclDetail'),
+ meta: { title: i18n.t('route.AssetAclDetail'), activeMenu: '/acl/asset-acl' },
+ hidden: true
+ },
+ {
+ path: ':id/update',
+ name: 'AssetAclUpdate',
+ component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
+ meta: { title: i18n.t('route.AssetAclUpdate'), activeMenu: '/acl/asset-acl' },
+ hidden: true
+ }
+ ]
+ }
+]
diff --git a/src/router/index.js b/src/router/index.js
index 694ccbe94..d95d091a4 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -36,6 +36,7 @@ import OpsRoutes from './ops'
import TicketsRoutes from './tickets'
import AuditsRoutes from './audits'
import commonRoutes from './common'
+import aclRoutes from './acl'
/**
* constantRoutes
@@ -117,6 +118,17 @@ export const allRoleRoutes = [
meta: { title: i18n.t('route.Perms'), icon: 'edit' },
children: PermsRoute
},
+ {
+ path: '/acl/',
+ component: Layout,
+ redirect: '/perms/access-control-list/',
+ name: 'Acl',
+ meta: {
+ licenseRequired: true,
+ title: i18n.t('route.Acl'),
+ icon: 'fort-awesome' },
+ children: aclRoutes
+ },
{
path: '/terminal/',
component: Layout,
diff --git a/src/router/tickets.js b/src/router/tickets.js
index b0753fd89..9f29bbe79 100644
--- a/src/router/tickets.js
+++ b/src/router/tickets.js
@@ -28,6 +28,13 @@ export default [
meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' },
hidden: true
},
+ {
+ path: 'tickets/login-asset-confirm/:id',
+ name: 'loginAssetTicketDetail',
+ component: () => import('@/views/tickets/LoginAssetConfirm/Detail/index'),
+ meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' },
+ hidden: true
+ },
{
path: 'tickets/request-application-perm/create',
name: 'RequestApplicationPermTicketCreateUpdate',
diff --git a/src/router/userPage.js b/src/router/userPage.js
index 6ed4e3b0e..0d5e1137f 100644
--- a/src/router/userPage.js
+++ b/src/router/userPage.js
@@ -103,6 +103,13 @@ export default [
meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets', permissions: [rolec.PERM_USE] },
hidden: true
},
+ {
+ path: 'tickets/login-asset-confirm/:id',
+ name: 'loginAssetTicketDetail',
+ component: () => import('@/views/tickets/LoginAssetConfirm/Detail/index'),
+ meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets', permissions: [rolec.PERM_USE] },
+ hidden: true
+ },
{
path: 'tickets/request-application-perm/create',
name: 'RequestApplicationPermTicketCreateUpdate',
diff --git a/src/router/users.js b/src/router/users.js
index 6ea0aa177..1d087c004 100644
--- a/src/router/users.js
+++ b/src/router/users.js
@@ -1,4 +1,5 @@
import i18n from '@/i18n/i18n'
+import empty from '@/layout/empty'
export default [
{
path: 'users',
@@ -53,5 +54,42 @@ export default [
name: 'UserGroupDetail',
hidden: true,
meta: { title: i18n.t('route.UserGroupDetail'), activeMenu: '/users/groups' }
+ },
+ {
+ path: 'user-acl',
+ component: empty,
+ redirect: '',
+ meta: { title: i18n.t('route.UserAclList') },
+ hidden: true,
+ children: [
+ {
+ path: '',
+ name: 'UserAclList',
+ component: () => import('@/views/acl/UserAcl/UserAclList'),
+ meta: { title: i18n.t('route.UserAclList'), activeMenu: '/users/users' },
+ hidden: true
+ },
+ {
+ path: 'create',
+ name: 'UserAclCreate',
+ component: () => import('@/views/acl/UserAcl/UserAclCreateUpdate'),
+ meta: { title: i18n.t('route.UserAclCreate'), activeMenu: '/users/users' },
+ hidden: true
+ },
+ {
+ path: ':id',
+ name: 'UserAclDetail',
+ component: () => import('@/views/acl/UserAcl/UserAclDetail'),
+ meta: { title: i18n.t('route.UserAclDetail'), activeMenu: '/users/users' },
+ hidden: true
+ },
+ {
+ path: ':id/update',
+ name: 'UserAclUpdate',
+ component: () => import('@/views/acl/UserAcl/UserAclCreateUpdate'),
+ meta: { title: i18n.t('route.UserAclUpdate') },
+ hidden: true
+ }
+ ]
}
]
diff --git a/src/views/acl/AssetAcl/AssetAclCreateUpdate.vue b/src/views/acl/AssetAcl/AssetAclCreateUpdate.vue
new file mode 100644
index 000000000..aaeb1474f
--- /dev/null
+++ b/src/views/acl/AssetAcl/AssetAclCreateUpdate.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/AssetAcl/AssetAclDetail/detail.vue b/src/views/acl/AssetAcl/AssetAclDetail/detail.vue
new file mode 100644
index 000000000..76b2a3b43
--- /dev/null
+++ b/src/views/acl/AssetAcl/AssetAclDetail/detail.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/AssetAcl/AssetAclDetail/index.vue b/src/views/acl/AssetAcl/AssetAclDetail/index.vue
new file mode 100644
index 000000000..c7e0fff23
--- /dev/null
+++ b/src/views/acl/AssetAcl/AssetAclDetail/index.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/AssetAcl/AssetAclList.vue b/src/views/acl/AssetAcl/AssetAclList.vue
new file mode 100644
index 000000000..cc1cddb44
--- /dev/null
+++ b/src/views/acl/AssetAcl/AssetAclList.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
diff --git a/src/views/acl/UserAcl/UserAclCreateUpdate.vue b/src/views/acl/UserAcl/UserAclCreateUpdate.vue
new file mode 100644
index 000000000..849599fc8
--- /dev/null
+++ b/src/views/acl/UserAcl/UserAclCreateUpdate.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/UserAcl/UserAclDetail/Detail.vue b/src/views/acl/UserAcl/UserAclDetail/Detail.vue
new file mode 100644
index 000000000..ac4909f41
--- /dev/null
+++ b/src/views/acl/UserAcl/UserAclDetail/Detail.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/UserAcl/UserAclDetail/index.vue b/src/views/acl/UserAcl/UserAclDetail/index.vue
new file mode 100644
index 000000000..fe037e7a5
--- /dev/null
+++ b/src/views/acl/UserAcl/UserAclDetail/index.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/acl/UserAcl/UserAclList.vue b/src/views/acl/UserAcl/UserAclList.vue
new file mode 100644
index 000000000..0041b47ed
--- /dev/null
+++ b/src/views/acl/UserAcl/UserAclList.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
diff --git a/src/views/tickets/LoginAssetConfirm/Detail/TicketDetail.vue b/src/views/tickets/LoginAssetConfirm/Detail/TicketDetail.vue
new file mode 100644
index 000000000..f31814278
--- /dev/null
+++ b/src/views/tickets/LoginAssetConfirm/Detail/TicketDetail.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
diff --git a/src/views/tickets/LoginAssetConfirm/Detail/index.vue b/src/views/tickets/LoginAssetConfirm/Detail/index.vue
new file mode 100644
index 000000000..22557987c
--- /dev/null
+++ b/src/views/tickets/LoginAssetConfirm/Detail/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/tickets/TicketListTable.vue b/src/views/tickets/TicketListTable.vue
index a3ca60605..dcbd3d356 100644
--- a/src/views/tickets/TicketListTable.vue
+++ b/src/views/tickets/TicketListTable.vue
@@ -36,6 +36,8 @@ export default {
return 'AssetsTicketDetail'
} else if (row.type === 'apply_application') {
return 'AppsTicketDetail'
+ } else if (row.type === 'login_asset_confirm') {
+ return 'loginAssetTicketDetail'
} else {
return 'TicketDetail'
}
diff --git a/src/views/users/User/UserDetail/index.vue b/src/views/users/User/UserDetail/index.vue
index 297d5e0eb..7a495f44c 100644
--- a/src/views/users/User/UserDetail/index.vue
+++ b/src/views/users/User/UserDetail/index.vue
@@ -15,6 +15,7 @@ import UserApplicationPermissionRules from './UserApplicationsPermissionRules'
import UserGrantedDatabases from './UserGrantedDatabases'
import UserGrantedK8Ss from './UserGrantedK8Ss'
import UserK8SPermissionRules from './UserK8SPermissionRules'
+import UserAclList from '@/views/acl/UserAcl/UserAclList'
import UserDatabasePermissionRules from './UserDatabasePermissionRules'
import UserInfo from './UserInfo'
@@ -29,7 +30,8 @@ export default {
UserGrantedDatabases,
UserDatabasePermissionRules,
UserK8SPermissionRules,
- UserGrantedK8Ss
+ UserGrantedK8Ss,
+ UserAclList
},
data() {
const vm = this
@@ -61,23 +63,11 @@ export default {
{
title: this.$t('users.tabs.ApplicationPermissionRules'),
name: 'UserApplicationPermissionRules'
+ },
+ {
+ title: '用户登录规则',
+ name: 'UserAclList'
}
- // {
- // title: this.$t('users.tabs.grantedDatabases'),
- // name: 'UserGrantedDatabases'
- // },
- // {
- // title: this.$t('users.tabs.databasePermissionRules'),
- // name: 'UserDatabasePermissionRules'
- // },
- // {
- // title: this.$t('users.tabs.grantedK8Ss'),
- // name: 'UserGrantedK8Ss'
- // },
- // {
- // title: this.$t('users.tabs.k8sPermissionRules'),
- // name: 'UserK8SPermissionRules'
- // }
]
}
}