perf: 提取 CommandACL 和 LoginAssetACL 对于 User Asset Account 公共数据和处理逻辑

This commit is contained in:
Bai
2022-12-04 21:50:44 +08:00
parent d3c297d24f
commit 4c8819c039
5 changed files with 127 additions and 128 deletions

View File

@@ -5,6 +5,12 @@
<script>
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
import rules from '@/components/DataForm/rules'
import {
UserAssetAccountFieldInitial,
afterGetFormValueForHandleUserAssetAccount,
cleanFormValueForHandleUserAssetAccount
} from '../common'
export default {
name: 'AclCreateUpdate',
components: {
@@ -13,17 +19,7 @@ export default {
data() {
return {
initial: {
action: 'login_confirm',
users: {
username_group: '*'
},
assets: {
name_group: '*',
address_group: '*'
},
accounts: {
username_group: '*'
}
...UserAssetAccountFieldInitial
},
fields: [
[this.$t('common.Basic'), ['name', 'priority']],
@@ -62,34 +58,8 @@ export default {
}
},
url: '/api/v1/acls/login-asset-acls/',
afterGetFormValue(formValue) {
// assets
formValue.assets.name_group = formValue.assets.name_group.toString()
formValue.assets.address_group = formValue.assets.address_group.toString()
// accounts
formValue.accounts.username_group = formValue.accounts.username_group.toString()
// users
formValue.users.username_group = formValue.users.username_group.toString()
return formValue
},
cleanFormValue(value) {
// assets
if (!Array.isArray(value.assets.name_group)) {
value.assets.name_group = value.assets.name_group ? value.assets.name_group.split(',') : []
}
if (!Array.isArray(value.assets.address_group)) {
value.assets.address_group = value.assets.address_group ? value.assets.address_group.split(',') : []
}
// accounts
if (!Array.isArray(value.accounts.username_group)) {
value.accounts.username_group = value.accounts.username_group ? value.accounts.username_group.split(',') : []
}
// users
if (!Array.isArray(value.users.username_group)) {
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
}
return value
}
afterGetFormValue: afterGetFormValueForHandleUserAssetAccount,
cleanFormValue: cleanFormValueForHandleUserAssetAccount
}
},
methods: {

View File

@@ -4,6 +4,10 @@
<script>
import { GenericListPage } from '@/layout/components'
import {
userAssetAccountFieldNames,
fieldsMetaListPageForUserAssetAccount
} from '../common'
export default {
components: {
@@ -14,67 +18,24 @@ export default {
tableConfig: {
url: '/api/v1/acls/login-asset-acls/',
columns: [
'name', 'user_username_group', 'hostname_group', 'ip_group', 'name_group',
'name',
...userAssetAccountFieldNames,
'reviewers', 'priority',
'is_active', 'comment', 'actions'
],
columnsShow: {
min: ['name', 'actions'],
default: [
'name', 'user_username_group', 'hostname_group', 'ip_group', 'reviewers',
'priority', 'is_active', 'comment', 'actions'
'name',
...userAssetAccountFieldNames,
'reviewers', 'priority', 'is_active', 'comment', 'actions'
]
},
columnsMeta: {
user_username_group: {
prop: 'users.username_group',
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.users.username_group.toString()} </span>
},
label: this.$t('acl.username_group')
},
...fieldsMetaListPageForUserAssetAccount,
reviewers: {
prop: 'reviewers_amount'
},
hostname_group: {
prop: 'assets.hostname_group',
label: this.$t('acl.hostname_group'),
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.assets.hostname_group.toString()} </span>
}
},
ip_group: {
prop: 'assets.ip_group',
label: this.$t('acl.asset_ip_group'),
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.assets.ip_group.toString()} </span>
}
},
name_group: {
prop: 'system_users.name_group',
label: this.$t('acl.system_users_name_group'),
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.system_users.name_group.toString()} </span>
}
},
protocol_group: {
prop: 'system_users.protocol_group',
label: this.$t('acl.system_users_protocol_group'),
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.system_users.protocol_group.toString()} </span>
}
},
systemuser_username_group: {
prop: 'system_users.username_group',
label: this.$t('acl.system_users_username_group'),
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.system_users.username_group.toString()} </span>
return <span> { row.reviewers.length }</span>
}
}
}

View File

@@ -11,6 +11,11 @@
<script>
import { GenericCreateUpdatePage } from '@/layout/components'
import rules from '@/components/DataForm/rules'
import {
UserAssetAccountFieldInitial,
afterGetFormValueForHandleUserAssetAccount,
cleanFormValueForHandleUserAssetAccount
} from '../../common'
export default {
name: 'CommandFilterAclCreateUpdate',
@@ -20,7 +25,8 @@ export default {
data() {
return {
initial: {
is_active: true
is_active: true,
...UserAssetAccountFieldInitial
},
fields: [
[this.$t('common.Basic'), ['name']],
@@ -76,7 +82,9 @@ export default {
is_active: {
type: 'checkbox'
}
}
},
afterGetFormValue: afterGetFormValueForHandleUserAssetAccount,
cleanFormValue: cleanFormValueForHandleUserAssetAccount
}
}
}

View File

@@ -5,6 +5,10 @@
<script>
import { ListTable } from '@/components'
import { DetailFormatter } from '@/components/TableFormatters'
import {
userAssetAccountFieldNames,
fieldsMetaListPageForUserAssetAccount
} from '../../common'
export default {
components: {
@@ -19,16 +23,18 @@ export default {
resource: 'commandfilteracl'
},
columns: [
'name', 'user_username_group', 'asset_name_group', 'asset_address_group',
'account_username_group', 'command_groups', 'action',
'name',
...userAssetAccountFieldNames,
'command_groups', 'action',
'date_created', 'created_by', 'org_name',
'comment', 'is_active', 'actions'
],
columnsShow: {
min: ['name', 'actions'],
default: [
'name', 'user_username_group', 'asset_name_group', 'asset_address_group',
'account_username_group', 'command_groups', 'comment', 'actions'
'name',
...userAssetAccountFieldNames,
'command_groups', 'priority', 'is_active', 'comment', 'actions'
]
},
columnsMeta: {
@@ -38,43 +44,16 @@ export default {
route: 'CommandFilterAclDetail'
}
},
user_username_group: {
prop: 'users.username_group',
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.users.username_group.toString()} </span>
},
label: this.$t('acl.UserUsername')
},
asset_name_group: {
prop: 'assets.name_group',
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.assets.name_group.toString()} </span>
},
label: this.$t('acl.AssetName')
},
asset_address_group: {
prop: 'assets.address_group',
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.assets.address_group.toString()} </span>
},
label: this.$t('acl.AssetAddress')
},
account_username_group: {
prop: 'accounts.username_group',
showOverflowTooltip: true,
formatter: function(row) {
return <span> {row.accounts.username_group.toString()} </span>
},
label: this.$t('acl.AccountUsername')
},
...fieldsMetaListPageForUserAssetAccount,
command_groups: {
label: this.$t('acl.CommandGroup'),
formatter: function(row) {
return <span> { row.command_groups.length }</span>
}
},
reviewers: {
formatter: function(row) {
return <span> { row.reviewers.length }</span>
}
}
}
},

81
src/views/acl/common.js Normal file
View File

@@ -0,0 +1,81 @@
import i18n from '@/i18n/i18n'
export const UserAssetAccountFieldInitial = {
users: {
username_group: '*'
},
assets: {
name_group: '*',
address_group: '*'
},
accounts: {
username_group: '*'
}
}
export function afterGetFormValueForHandleUserAssetAccount(formValue) {
// users
formValue.users.username_group = formValue.users.username_group.toString()
// assets
formValue.assets.name_group = formValue.assets.name_group.toString()
formValue.assets.address_group = formValue.assets.address_group.toString()
// accounts
formValue.accounts.username_group = formValue.accounts.username_group.toString()
return formValue
}
export function cleanFormValueForHandleUserAssetAccount(value) {
// users
if (!Array.isArray(value.users.username_group)) {
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
}
// assets
if (!Array.isArray(value.assets.name_group)) {
value.assets.name_group = value.assets.name_group ? value.assets.name_group.split(',') : []
}
if (!Array.isArray(value.assets.address_group)) {
value.assets.address_group = value.assets.address_group ? value.assets.address_group.split(',') : []
}
// accounts
if (!Array.isArray(value.accounts.username_group)) {
value.accounts.username_group = value.accounts.username_group ? value.accounts.username_group.split(',') : []
}
return value
}
export const fieldsMetaListPageForUserAssetAccount = {
user_username_group: {
prop: 'users.username_group',
showOverflowTooltip: true,
formatter: function(row) {
return row.users.username_group.toString()
},
label: i18n.t('acl.UserUsername')
},
asset_name_group: {
prop: 'assets.name_group',
showOverflowTooltip: true,
formatter: function(row) {
return row.assets.name_group.toString()
},
label: i18n.t('acl.AssetName')
},
asset_address_group: {
prop: 'assets.address_group',
showOverflowTooltip: true,
formatter: function(row) {
return row.assets.address_group.toString()
},
label: i18n.t('acl.AssetAddress')
},
account_username_group: {
prop: 'accounts.username_group',
showOverflowTooltip: true,
formatter: function(row) {
return row.accounts.username_group.toString()
},
label: i18n.t('acl.AccountUsername')
}
}
export const userAssetAccountFieldNames = Object.keys(fieldsMetaListPageForUserAssetAccount)