mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-15 23:01:11 +00:00
Merge branch 'v4' of github.com:jumpserver/lina into v4
This commit is contained in:
@@ -157,6 +157,7 @@ export default {
|
||||
},
|
||||
columnsMeta: {
|
||||
name: {
|
||||
width: '120px',
|
||||
formatter: function(row) {
|
||||
const to = {
|
||||
name: 'AssetAccountDetail',
|
||||
@@ -182,8 +183,10 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
username: {
|
||||
width: '120px'
|
||||
},
|
||||
secret_type: {
|
||||
width: '100px',
|
||||
formatter: function(row) {
|
||||
return row.secret_type.label
|
||||
}
|
||||
@@ -194,7 +197,7 @@ export default {
|
||||
}
|
||||
},
|
||||
has_secret: {
|
||||
width: '100px',
|
||||
width: '120px',
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
|
@@ -153,7 +153,7 @@ export default {
|
||||
border: 1px solid #dcdee2;
|
||||
border-radius: 1px;
|
||||
background-color: #fff;
|
||||
line-height: 32px;
|
||||
line-height: 30px;
|
||||
|
||||
&:hover {
|
||||
border-color: #C0C4CC;
|
||||
@@ -165,7 +165,7 @@ export default {
|
||||
}
|
||||
|
||||
&>>> .el-autocomplete {
|
||||
height: 30px;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ export default {
|
||||
}
|
||||
|
||||
.filter-field >>> .el-input__inner {
|
||||
height: 29px;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.show-password {
|
||||
|
@@ -51,6 +51,7 @@ export default {
|
||||
computed: {
|
||||
iTitle() {
|
||||
let title = this.title || this.$route.meta.title
|
||||
console.log('title', this.$route.meta.title)
|
||||
if (!title) {
|
||||
title = this.$t('NoTitle')
|
||||
}
|
||||
|
@@ -140,7 +140,7 @@ export default [
|
||||
name: 'AccountPushCreate',
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: i18n.t('Create'),
|
||||
title: i18n.t('AccountPushCreate'),
|
||||
permissions: ['accounts.add_pushaccountautomation']
|
||||
}
|
||||
},
|
||||
@@ -150,7 +150,7 @@ export default [
|
||||
name: 'AccountPushUpdate',
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: i18n.t('Update'),
|
||||
title: i18n.t('AccountPushUpdate'),
|
||||
permissions: ['accounts.change_pushaccountautomation']
|
||||
}
|
||||
},
|
||||
@@ -212,7 +212,7 @@ export default [
|
||||
name: 'AccountGatherTaskCreate',
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: i18n.t('Create'),
|
||||
title: i18n.t('AccountGatherTaskCreate'),
|
||||
permissions: ['accounts.add_gatheraccountsautomation']
|
||||
}
|
||||
},
|
||||
@@ -232,7 +232,7 @@ export default [
|
||||
name: 'AccountGatherTaskUpdate',
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: i18n.t('Update'),
|
||||
title: i18n.t('AccountGatherTaskUpdate'),
|
||||
action: 'update',
|
||||
permissions: ['accounts.change_gatheraccountsautomation'],
|
||||
activeMenu: '/accounts/account-gather'
|
||||
@@ -357,7 +357,7 @@ export default [
|
||||
component: () => import('@/views/accounts/AccountBackup/AccountBackupCreateUpdate.vue'),
|
||||
name: 'AccountBackupPlanCreate',
|
||||
meta: {
|
||||
title: i18n.t('Create'),
|
||||
title: i18n.t('AccountBackupPlanCreate'),
|
||||
action: 'create'
|
||||
},
|
||||
hidden: true
|
||||
@@ -367,7 +367,7 @@ export default [
|
||||
component: () => import('@/views/accounts/AccountBackup/AccountBackupCreateUpdate.vue'),
|
||||
name: 'AccountBackupPlanUpdate',
|
||||
meta: {
|
||||
title: i18n.t('Update'),
|
||||
title: i18n.t('AccountBackupPlanUpdate'),
|
||||
action: 'update'
|
||||
},
|
||||
hidden: true
|
||||
@@ -376,7 +376,7 @@ export default [
|
||||
path: ':id',
|
||||
component: () => import('@/views/accounts/AccountBackup/AccountBackupDetail/index.vue'),
|
||||
name: 'AccountBackupPlanDetail',
|
||||
meta: { title: i18n.t('AccountBackup') },
|
||||
meta: { title: i18n.t('AccountBackupPlanDetail') },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
|
@@ -43,7 +43,7 @@
|
||||
|
||||
&.has-logo {
|
||||
.el-scrollbar {
|
||||
height: calc(100% - #{$headerHeight} - 40px - 50px); // header-height, view-header, footer-height
|
||||
height: calc(100% - #{$headerHeight} - 40px - 52px); // header-height, view-header, footer-height
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -415,9 +415,14 @@ export function formatFileSize(bytes) {
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
|
||||
}
|
||||
|
||||
const notUppercase = ['to', 'a', 'from']
|
||||
|
||||
export function toTitleCase(string) {
|
||||
if (!string) return string
|
||||
return string.trim().split(' ').map(item => {
|
||||
if (notUppercase.includes(item.toLowerCase())) {
|
||||
return item
|
||||
}
|
||||
return item[0].toUpperCase() + item.slice(1)
|
||||
}).join(' ')
|
||||
}
|
||||
|
@@ -38,7 +38,6 @@ async function getPublicSetting({ to, from, next }, isOpen) {
|
||||
if (!publicSettings || Object.keys(publicSettings).length === 0 || !isOpen) {
|
||||
await store.dispatch('settings/getPublicSettings', isOpen)
|
||||
}
|
||||
console.log('Get public setting done')
|
||||
}
|
||||
|
||||
async function refreshCurrentOrg() {
|
||||
|
@@ -42,14 +42,10 @@ export default {
|
||||
},
|
||||
timedelta: {
|
||||
label: this.$t('TimeDelta'),
|
||||
width: '90px',
|
||||
formatter: function(row) {
|
||||
return row.timedelta.toFixed(2) + 's'
|
||||
}
|
||||
},
|
||||
is_success: {
|
||||
width: '90px'
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
hasDelete: false,
|
||||
|
@@ -45,14 +45,7 @@ export default {
|
||||
is_periodic: {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
},
|
||||
width: '80px'
|
||||
},
|
||||
periodic_display: {
|
||||
width: '150px'
|
||||
},
|
||||
comment: {
|
||||
width: '90px'
|
||||
}
|
||||
},
|
||||
executed_amount: {
|
||||
formatter: DetailFormatter,
|
||||
@@ -70,7 +63,6 @@ export default {
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
width: '164px',
|
||||
formatterArgs: {
|
||||
onClone: ({ row }) => {
|
||||
vm.$router.push({ name: 'AccountBackupPlanCreate', query: { clone_from: row.id }})
|
||||
|
@@ -51,7 +51,6 @@ export default {
|
||||
prop: 'id',
|
||||
label: this.$t('Actions'),
|
||||
align: 'center',
|
||||
width: 150,
|
||||
objects: this.object.assets,
|
||||
formatter: DeleteActionFormatter,
|
||||
onDelete: function(col, row, cellValue, reload) {
|
||||
|
@@ -42,25 +42,21 @@ export default {
|
||||
},
|
||||
asset_amount: {
|
||||
label: this.$t('AssetAmount'),
|
||||
width: '80px',
|
||||
formatter: function(row) {
|
||||
return <span>{row.snapshot.asset_amount}</span>
|
||||
}
|
||||
},
|
||||
node_amount: {
|
||||
label: this.$t('NodeAmount'),
|
||||
width: '80px',
|
||||
formatter: function(row) {
|
||||
return <span>{row.snapshot.node_amount}</span>
|
||||
}
|
||||
},
|
||||
status: {
|
||||
label: this.$t('Result'),
|
||||
width: '80px'
|
||||
label: this.$t('Result')
|
||||
},
|
||||
timedelta: {
|
||||
label: this.$t('TimeDelta'),
|
||||
width: '90px',
|
||||
formatter: function(row) {
|
||||
return row.timedelta.toFixed(2) + 's'
|
||||
}
|
||||
|
@@ -46,21 +46,14 @@ export default {
|
||||
return <span> { row.secret_strategy.label } </span>
|
||||
}
|
||||
},
|
||||
secret_type: {
|
||||
width: '120px'
|
||||
},
|
||||
is_periodic: {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
},
|
||||
width: '152px'
|
||||
},
|
||||
periodic_display: {
|
||||
width: '150px'
|
||||
},
|
||||
executed_amount: {
|
||||
formatter: DetailFormatter,
|
||||
width: '100px',
|
||||
formatterArgs: {
|
||||
route: 'AccountGatherList',
|
||||
can: vm.$hasPerm('accounts.view_changesecretexecution'),
|
||||
@@ -75,11 +68,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
comment: {
|
||||
width: '90px'
|
||||
},
|
||||
actions: {
|
||||
width: '164px',
|
||||
formatterArgs: {
|
||||
onClone: ({ row }) => {
|
||||
vm.$router.push({ name: 'AccountChangeSecretCreate', query: { clone_from: row.id }})
|
||||
|
@@ -52,7 +52,7 @@ export default {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
},
|
||||
width: '152px'
|
||||
width: '150px'
|
||||
},
|
||||
periodic_display: {
|
||||
},
|
||||
|
@@ -14,8 +14,8 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
node_ids: [],
|
||||
asset_ids: [],
|
||||
nodeIds: [],
|
||||
assetIds: [],
|
||||
isAssetType: '',
|
||||
initial: {
|
||||
is_periodic: this.$store.getters.hasValidLicense,
|
||||
@@ -55,7 +55,7 @@ export default {
|
||||
},
|
||||
on: {
|
||||
input: ([value]) => {
|
||||
this.asset_ids = value
|
||||
this.assetIds = value
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -71,7 +71,7 @@ export default {
|
||||
},
|
||||
on: {
|
||||
input: ([value]) => {
|
||||
this.node_ids = value?.map(i => i.pk)
|
||||
this.nodeIds = value?.map(i => i.pk)
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -96,8 +96,8 @@ export default {
|
||||
label: this.$t('PushParams'),
|
||||
el: {
|
||||
method: 'push_account_method',
|
||||
assets: this.asset_ids,
|
||||
nodes: this.node_ids
|
||||
assets: this.assetIds,
|
||||
nodes: this.nodeIds
|
||||
},
|
||||
helpText: this.$t('ParamsHelpText')
|
||||
}
|
||||
@@ -121,13 +121,13 @@ export default {
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
node_ids: {
|
||||
nodeIds: {
|
||||
handler(val) {
|
||||
this.fieldsMeta.params.el.nodes = val
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
asset_ids: {
|
||||
assetIds: {
|
||||
handler(val) {
|
||||
this.fieldsMeta.params.el.assets = val
|
||||
},
|
||||
|
@@ -42,25 +42,21 @@ export default {
|
||||
},
|
||||
asset_amount: {
|
||||
label: this.$t('AssetAmount'),
|
||||
width: '120px',
|
||||
formatter: function(row) {
|
||||
return <span>{row.snapshot.asset_amount}</span>
|
||||
}
|
||||
},
|
||||
node_amount: {
|
||||
label: this.$t('NodeAmount'),
|
||||
width: '120px',
|
||||
formatter: function(row) {
|
||||
return <span>{row.snapshot.node_amount}</span>
|
||||
}
|
||||
},
|
||||
status: {
|
||||
label: this.$t('Result'),
|
||||
width: '120px'
|
||||
label: this.$t('Result')
|
||||
},
|
||||
timedelta: {
|
||||
label: this.$t('TimeDelta'),
|
||||
width: '100px',
|
||||
formatter: function(row) {
|
||||
return row.timedelta.toFixed(2) + 's'
|
||||
}
|
||||
|
@@ -56,22 +56,13 @@ export default {
|
||||
}
|
||||
},
|
||||
assets_amount: {
|
||||
label: vm.$t('AssetAmount'),
|
||||
width: '80px'
|
||||
label: vm.$t('AssetAmount')
|
||||
},
|
||||
nodes_amount: {
|
||||
label: vm.$t('NodeAmount'),
|
||||
width: '80px'
|
||||
},
|
||||
is_periodic: {
|
||||
width: '152px'
|
||||
},
|
||||
periodic_display: {
|
||||
width: '150px'
|
||||
label: vm.$t('NodeAmount')
|
||||
},
|
||||
password_strategy_display: {
|
||||
label: vm.$t('PasswordStrategy'),
|
||||
width: '220px',
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
executed_amount: {
|
||||
@@ -89,14 +80,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
is_active: {
|
||||
width: '87px'
|
||||
},
|
||||
comment: {
|
||||
width: '90px'
|
||||
},
|
||||
actions: {
|
||||
width: '164px',
|
||||
formatterArgs: {
|
||||
extraActions: [
|
||||
{
|
||||
|
@@ -38,17 +38,12 @@ export default {
|
||||
},
|
||||
columnsMeta: {
|
||||
privileged: {
|
||||
width: '120px',
|
||||
formatterArgs: {
|
||||
showText: false,
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
secret_type: {
|
||||
width: '120px'
|
||||
},
|
||||
has_secret: {
|
||||
width: '120px',
|
||||
formatterArgs: {
|
||||
showFalse: false,
|
||||
showText: false
|
||||
|
@@ -21,14 +21,12 @@ export default {
|
||||
min: ['material', 'is_success'],
|
||||
default: [
|
||||
'creator_name', 'material', 'is_finished',
|
||||
'is_success', 'time_cost',
|
||||
'date_finished', 'actions'
|
||||
'is_success', 'time_cost', 'date_finished', 'actions'
|
||||
]
|
||||
},
|
||||
columns: [
|
||||
'creator_name', 'material', 'is_finished',
|
||||
'is_success', 'time_cost',
|
||||
'date_finished', 'actions'
|
||||
'is_success', 'time_cost', 'date_finished', 'actions'
|
||||
],
|
||||
columnsMeta: {
|
||||
actions: {
|
||||
@@ -50,7 +48,6 @@ export default {
|
||||
}
|
||||
},
|
||||
time_cost: {
|
||||
width: '100px',
|
||||
formatter: function(row) {
|
||||
if (row.time_cost) {
|
||||
return row.time_cost.toFixed(2) + 's'
|
||||
@@ -59,19 +56,14 @@ export default {
|
||||
}
|
||||
},
|
||||
is_finished: {
|
||||
width: '96px',
|
||||
formatter: (row) => {
|
||||
if (row.is_finished) {
|
||||
return <i Class='fa fa-check text-primary'/>
|
||||
}
|
||||
return <i Class='fa fa-times text-danger'/>
|
||||
},
|
||||
formatterArgs: {
|
||||
width: '14px'
|
||||
}
|
||||
},
|
||||
is_success: {
|
||||
width: '96px',
|
||||
formatter: (row) => {
|
||||
if (!row.is_finished) {
|
||||
return <i Class='fa fa fa-spinner fa-spin'/>
|
||||
@@ -80,13 +72,7 @@ export default {
|
||||
return <i Class='fa fa-check text-primary'/>
|
||||
}
|
||||
return <i Class='fa fa-times text-danger'/>
|
||||
},
|
||||
formatterArgs: {
|
||||
width: '14px'
|
||||
}
|
||||
},
|
||||
date_start: {
|
||||
width: '160px'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -25,23 +25,8 @@ export default {
|
||||
},
|
||||
url: '/api/v1/audits/login-logs/',
|
||||
columnsMeta: {
|
||||
username: {
|
||||
width: '120px'
|
||||
},
|
||||
backend_display: {
|
||||
width: '120px'
|
||||
},
|
||||
actions: {
|
||||
has: false
|
||||
},
|
||||
city: {
|
||||
width: '120px'
|
||||
},
|
||||
reason_display: {
|
||||
width: '120px'
|
||||
},
|
||||
datetime: {
|
||||
width: '120px'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -39,20 +39,7 @@ export default {
|
||||
]
|
||||
},
|
||||
columnsMeta: {
|
||||
resource_type: {
|
||||
width: '180px'
|
||||
},
|
||||
datetime: {
|
||||
width: '160px'
|
||||
},
|
||||
remote_addr: {
|
||||
width: '140px'
|
||||
},
|
||||
action_display: {
|
||||
width: '70px'
|
||||
},
|
||||
actions: {
|
||||
width: '70px',
|
||||
formatter: ActionsFormatter,
|
||||
formatterArgs: {
|
||||
hasUpdate: false,
|
||||
|
@@ -18,12 +18,6 @@ export default {
|
||||
default: ['user', 'change_by', 'remote_addr', 'datetime']
|
||||
},
|
||||
columnsMeta: {
|
||||
remote_addr: {
|
||||
width: '140px'
|
||||
},
|
||||
datetime: {
|
||||
width: '180px'
|
||||
},
|
||||
actions: {
|
||||
has: false
|
||||
}
|
||||
|
@@ -18,9 +18,8 @@
|
||||
import Page from '@/layout/components/Page'
|
||||
import AssetTreeTable from '@/components/Apps/AssetTreeTable'
|
||||
import PermBulkUpdateDialog from './components/PermBulkUpdateDialog'
|
||||
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { AccountLabelMapper, AssetPermissionListPageSearchConfigOptions } from '../const'
|
||||
import { AssetPermissionListPageSearchConfigOptions, AssetPermissionTableMeta } from '../const'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -55,99 +54,7 @@ export default {
|
||||
'nodes_amount', 'accounts', 'is_valid', 'actions'
|
||||
]
|
||||
},
|
||||
columnsMeta: {
|
||||
name: {
|
||||
minWidth: '160px',
|
||||
formatterArgs: {
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionDetail'
|
||||
}
|
||||
}
|
||||
},
|
||||
action: {
|
||||
label: this.$t('Action'),
|
||||
formatter: function(row) {
|
||||
if (row.actions.length === 6) {
|
||||
return vm.$t('All')
|
||||
}
|
||||
return row.actions.map(item => {
|
||||
return item.label.replace(/ \([^)]*\)/, '')
|
||||
}).join(',')
|
||||
}
|
||||
},
|
||||
is_expired: {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
from_ticket: {
|
||||
width: 100,
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
users_amount: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
user_groups_amount: {
|
||||
width: 100,
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
assets_amount: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
nodes_amount: {
|
||||
width: 80,
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
accounts: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
getItem(item) {
|
||||
if (item !== '@SPEC') {
|
||||
return AccountLabelMapper[item] || item
|
||||
}
|
||||
},
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAccount'
|
||||
}
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
updateRoute: 'AssetPermissionUpdate',
|
||||
performDelete: ({ row, col }) => {
|
||||
const id = row.id
|
||||
const url = `/api/v1/perms/asset-permissions/${id}/`
|
||||
return this.$axios.delete(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
columnsMeta: AssetPermissionTableMeta
|
||||
},
|
||||
headerActions: {
|
||||
hasLabelSearch: true,
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import i18n from '@/i18n/i18n'
|
||||
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
||||
|
||||
export const UserAssetPermissionListPageSearchConfigOptions = [
|
||||
{ label: i18n.t('Name'), value: 'name' },
|
||||
@@ -30,6 +31,100 @@ export const UserAssetPermissionListPageSearchConfigOptions = [
|
||||
}
|
||||
]
|
||||
|
||||
export const AssetPermissionTableMeta = {
|
||||
name: {
|
||||
minWidth: '160px',
|
||||
formatterArgs: {
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionDetail'
|
||||
}
|
||||
}
|
||||
},
|
||||
action: {
|
||||
label: i18n.t('Action'),
|
||||
formatter: (row) => {
|
||||
if (row.actions.length === 6) {
|
||||
return i18n.t('All')
|
||||
}
|
||||
return row.actions.map(item => {
|
||||
return item.label.replace(/ \([^)]*\)/, '')
|
||||
}).join(',')
|
||||
}
|
||||
},
|
||||
is_expired: {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
from_ticket: {
|
||||
width: 100,
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
users_amount: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
user_groups_amount: {
|
||||
width: 100,
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
assets_amount: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
nodes_amount: {
|
||||
width: 80,
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
accounts: {
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
getItem(item) {
|
||||
if (item !== '@SPEC') {
|
||||
return AccountLabelMapper[item] || item
|
||||
}
|
||||
},
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAccount'
|
||||
}
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
updateRoute: 'AssetPermissionUpdate',
|
||||
performDelete: ({ row, col }) => {
|
||||
const id = row.id
|
||||
const url = `/api/v1/perms/asset-permissions/${id}/`
|
||||
return this.$axios.delete(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const AssetPermissionListPageSearchConfigOptions = [
|
||||
...UserAssetPermissionListPageSearchConfigOptions,
|
||||
{
|
||||
|
@@ -66,7 +66,6 @@ export default {
|
||||
formatter: OutputExpandFormatter
|
||||
},
|
||||
risk_level: {
|
||||
width: '105px',
|
||||
formatter: (row, col, cellValue) => {
|
||||
const display = row['risk_level'].label
|
||||
if (cellValue?.value === 0) {
|
||||
@@ -79,15 +78,8 @@ export default {
|
||||
actions: {
|
||||
has: false
|
||||
},
|
||||
asset: {
|
||||
width: '120px'
|
||||
},
|
||||
user: {
|
||||
width: '100px'
|
||||
},
|
||||
session: {
|
||||
formatter: DetailFormatter,
|
||||
width: '100px',
|
||||
formatterArgs: {
|
||||
openInNewPage: true,
|
||||
can: this.$hasPerm('terminal.view_session'),
|
||||
@@ -104,7 +96,6 @@ export default {
|
||||
},
|
||||
timestamp: {
|
||||
label: this.$t('Date'),
|
||||
width: '130px',
|
||||
sortable: 'custom',
|
||||
formatter: function(row) {
|
||||
return toSafeLocalDateStr(row.timestamp * 1000)
|
||||
|
@@ -21,17 +21,7 @@ export default {
|
||||
},
|
||||
url: '/api/v1/audits/ftp-logs/',
|
||||
columnsMeta: {
|
||||
remote_addr: {
|
||||
width: '140px'
|
||||
},
|
||||
operate: {
|
||||
width: '100px'
|
||||
},
|
||||
is_success: {
|
||||
width: '100px'
|
||||
},
|
||||
actions: {
|
||||
width: '82px',
|
||||
formatterArgs: {
|
||||
hasUpdate: false,
|
||||
hasDelete: false,
|
||||
|
@@ -27,7 +27,7 @@ export default {
|
||||
return {
|
||||
min: ['id', 'actions'],
|
||||
default: [
|
||||
'id', 'user', 'asset', 'account', 'remote_addr', 'protocol',
|
||||
'id', 'user', 'asset', 'account', 'protocol',
|
||||
'date_start', 'actions'
|
||||
]
|
||||
}
|
||||
@@ -46,7 +46,6 @@ export default {
|
||||
prop: 'id',
|
||||
label: this.$t('Number'),
|
||||
align: 'center',
|
||||
width: '80px',
|
||||
formatter: function(row, column, cellValue, index) {
|
||||
const label = index + 1
|
||||
const route = { to: { name: 'SessionDetail', params: { id: row.id }}}
|
||||
@@ -54,7 +53,6 @@ export default {
|
||||
}
|
||||
},
|
||||
user: {
|
||||
width: '100px',
|
||||
formatter: DetailFormatter,
|
||||
formatterArgs: {
|
||||
getRoute: ({ row }) => {
|
||||
@@ -88,7 +86,6 @@ export default {
|
||||
}
|
||||
},
|
||||
is_finished: {
|
||||
width: '86px',
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
@@ -112,32 +109,15 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
command_amount: {
|
||||
width: '90px'
|
||||
},
|
||||
login_from: {
|
||||
width: '115px'
|
||||
},
|
||||
remote_addr: {
|
||||
width: '140px'
|
||||
},
|
||||
protocol: {
|
||||
width: '100px',
|
||||
sortable: false,
|
||||
formatter: null
|
||||
},
|
||||
date_start: {
|
||||
width: '150px'
|
||||
},
|
||||
date_end: {
|
||||
width: '150px'
|
||||
},
|
||||
duration: {
|
||||
label: this.$t('Duration'),
|
||||
formatter: function(row) {
|
||||
return timeOffset(row.date_start, row.date_end)
|
||||
},
|
||||
width: '80px'
|
||||
}
|
||||
},
|
||||
is_locked: {
|
||||
label: this.$t('IsLocked')
|
||||
@@ -145,7 +125,6 @@ export default {
|
||||
actions: {
|
||||
prop: 'actions',
|
||||
label: this.$t('Actions'),
|
||||
width: '160px',
|
||||
formatter: ActionsFormatter,
|
||||
formatterArgs: {
|
||||
hasEdit: false,
|
||||
|
@@ -67,7 +67,7 @@ export default {
|
||||
showText: false
|
||||
},
|
||||
align: 'center',
|
||||
width: '100px'
|
||||
width: '150px'
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
|
@@ -53,7 +53,7 @@ export default {
|
||||
showText: false
|
||||
},
|
||||
align: 'center',
|
||||
width: '100px'
|
||||
width: '150px'
|
||||
},
|
||||
comment: {
|
||||
sortable: 'custom'
|
||||
|
@@ -21,7 +21,6 @@ export default {
|
||||
},
|
||||
columnsMeta: {
|
||||
users_amount: {
|
||||
width: '120px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
async: true,
|
||||
|
@@ -66,7 +66,7 @@ export default {
|
||||
}
|
||||
},
|
||||
builtin: {
|
||||
width: '100px',
|
||||
width: '150px',
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
|
@@ -8,8 +8,7 @@
|
||||
|
||||
<script>
|
||||
import ListTable from '@/components/Table/ListTable'
|
||||
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
||||
import { UserAssetPermissionListPageSearchConfigOptions } from '@/views/perms/const'
|
||||
import { AssetPermissionTableMeta, UserAssetPermissionListPageSearchConfigOptions } from '@/views/perms/const'
|
||||
|
||||
export default {
|
||||
name: 'UserAssetPermission',
|
||||
@@ -32,101 +31,11 @@ export default {
|
||||
columnsShow: {
|
||||
min: ['name', 'actions'],
|
||||
default: [
|
||||
'name', 'users', 'user_groups', 'assets',
|
||||
'nodes', 'accounts', 'is_valid', 'actions'
|
||||
'name', 'users_amount', 'user_groups_amount', 'assets_amount',
|
||||
'nodes_amount', 'accounts', 'is_valid', 'actions'
|
||||
]
|
||||
},
|
||||
columnsMeta: {
|
||||
name: {
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail'
|
||||
}
|
||||
},
|
||||
action: {
|
||||
label: this.$t('Action'),
|
||||
formatter: function(row) {
|
||||
return row.actions.map(item => {
|
||||
return item.label
|
||||
}).join(', ')
|
||||
}
|
||||
},
|
||||
is_expired: {
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
from_ticket: {
|
||||
width: 100,
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
users: {
|
||||
width: '100px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail',
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
user_groups: {
|
||||
width: '100px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail',
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionUser'
|
||||
}
|
||||
}
|
||||
},
|
||||
assets: {
|
||||
width: '100px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail',
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
nodes: {
|
||||
width: '100px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail',
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAsset'
|
||||
}
|
||||
}
|
||||
},
|
||||
accounts: {
|
||||
width: '100px',
|
||||
formatter: AmountFormatter,
|
||||
formatterArgs: {
|
||||
route: 'AssetPermissionDetail',
|
||||
getItem(item) {
|
||||
return item
|
||||
},
|
||||
routeQuery: {
|
||||
activeTab: 'AssetPermissionAccount'
|
||||
}
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
updateRoute: 'AssetPermissionUpdate',
|
||||
hasDelete: false,
|
||||
hasClone: false,
|
||||
performDelete: ({ row, col }) => {
|
||||
const id = row.id
|
||||
const url = `/api/v1/perms/asset-permissions/${id}/`
|
||||
return this.$axios.delete(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
columnsMeta: AssetPermissionTableMeta
|
||||
},
|
||||
headerActions: {
|
||||
hasLeftActions: false,
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-row :gutter="10">
|
||||
<el-col :md="24" :sm="24">
|
||||
<BaseList :cssssssssslumns-show="columnsShow" :url="url" />
|
||||
<BaseList :columns-show="columnsShow" :url="url" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
@@ -24,10 +24,10 @@ export default {
|
||||
return {
|
||||
url: `/api/v1/terminal/sessions/?user_id=${this.object.id}&order=is_finished,-date_end`,
|
||||
columnsShow: {
|
||||
min: ['id'],
|
||||
min: ['id', 'user', 'asset', 'account'],
|
||||
default: [
|
||||
'id', 'user', 'asset', 'account', 'remote_addr', 'protocol',
|
||||
'command_amount', 'date_start', 'duration'
|
||||
'id', 'user', 'asset', 'account', 'protocol',
|
||||
'date_start', 'duration'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@@ -63,6 +63,9 @@ export default {
|
||||
width: '120px',
|
||||
collapsible: false
|
||||
},
|
||||
email: {
|
||||
'min-width': '120px'
|
||||
},
|
||||
username: {
|
||||
formatter: (row) => {
|
||||
return row['username'].replace(' ', '*')
|
||||
|
Reference in New Issue
Block a user