mirror of
https://github.com/jumpserver/lina.git
synced 2026-01-13 11:24:17 +00:00
perf: 提取 CommandACL 和 LoginAssetACL 对于 User Asset Account 公共数据和处理逻辑
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
81
src/views/acl/common.js
Normal 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)
|
||||
Reference in New Issue
Block a user