mirror of
https://github.com/jumpserver/lina.git
synced 2026-01-13 11:24:17 +00:00
perf: 修改系统用户列表
This commit is contained in:
@@ -1,34 +0,0 @@
|
||||
<template>
|
||||
<component :is="systemUserProtocolComponent" :title="iTitle" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SSH from './ssh'
|
||||
|
||||
export default {
|
||||
name: 'AdminUserCreate',
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
iTitle() {
|
||||
const params = this.$route.params
|
||||
let title = ''
|
||||
if (params.id) {
|
||||
title = this.$t('route.SystemUserUpdate')
|
||||
} else {
|
||||
title = this.$t('route.SystemUserCreate')
|
||||
}
|
||||
return title + '-' + this.$t('assets.AdminUser')
|
||||
},
|
||||
systemUserProtocolComponent() {
|
||||
return SSH
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -1,94 +0,0 @@
|
||||
<template>
|
||||
<GenericCreateUpdatePage
|
||||
:fields="fields"
|
||||
:initial="initial"
|
||||
:fields-meta="fieldsMeta"
|
||||
:url="url"
|
||||
:clean-form-value="cleanFormValue"
|
||||
v-bind="$attrs"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import getFields from '../fields'
|
||||
import { UploadKey } from '@/components'
|
||||
import { Required } from '@/components/DataForm/rules'
|
||||
import { UpdateToken } from '@/components/FormFields'
|
||||
|
||||
export default {
|
||||
name: 'AdminUserSSH',
|
||||
components: { GenericCreateUpdatePage },
|
||||
data() {
|
||||
const fields = getFields.bind(this)()
|
||||
return {
|
||||
url: '/api/v1/assets/admin-users/',
|
||||
initial: {
|
||||
},
|
||||
fields: [
|
||||
[this.$t('common.Basic'), ['name', 'protocol', 'username', 'type']],
|
||||
[this.$t('common.Auth'), ['password', 'private_key', 'passphrase']],
|
||||
[this.$t('common.Command filter'), ['cmd_filters']],
|
||||
[this.$t('assets.UserSwitch'), ['su_enabled', 'su_from']],
|
||||
[this.$t('common.Other'), ['priority', 'sftp_root', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
el: {
|
||||
placeholder: this.$t('common.Name')
|
||||
}
|
||||
},
|
||||
type: {
|
||||
hidden() {
|
||||
return true
|
||||
}
|
||||
},
|
||||
username: {
|
||||
el: {
|
||||
placeholder: this.$t('common.Username')
|
||||
},
|
||||
rules: [Required]
|
||||
},
|
||||
protocol: {
|
||||
el: {
|
||||
style: 'width:100%',
|
||||
disabled: true
|
||||
}
|
||||
},
|
||||
password: {
|
||||
helpText: this.$t('common.passwordOrPassphrase'),
|
||||
component: UpdateToken,
|
||||
hidden: (formValue) => {
|
||||
if (!this.$route.params.id) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
passphrase: {
|
||||
component: UpdateToken
|
||||
},
|
||||
private_key: {
|
||||
component: UploadKey
|
||||
},
|
||||
sftp_root: {
|
||||
rules: [Required],
|
||||
helpText: this.$t('assets.SFTPHelpMessage')
|
||||
},
|
||||
cmd_filters: fields.cmd_filters,
|
||||
su_enabled: fields.su_enabled,
|
||||
su_from: fields.su_from
|
||||
},
|
||||
cleanFormValue: (values) => {
|
||||
values['type'] = 'admin'
|
||||
return values
|
||||
}
|
||||
}
|
||||
},
|
||||
method: {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='less' scoped>
|
||||
|
||||
</style>
|
||||
@@ -1,65 +0,0 @@
|
||||
<template>
|
||||
<component :is="systemUserProtocolComponent" :title="iTitle" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SSH from './ssh'
|
||||
import RDP from './rdp'
|
||||
import VNC from './vnc'
|
||||
import Database from './database'
|
||||
import K8S from './k8s'
|
||||
import TELNET from './telnet'
|
||||
|
||||
export default {
|
||||
name: 'SystemUserCreateUpdate',
|
||||
components: { SSH, RDP, VNC, Database },
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
method: {
|
||||
},
|
||||
computed: {
|
||||
iTitle() {
|
||||
const params = this.$route.params
|
||||
let title = ''
|
||||
if (params.id) {
|
||||
title = this.$t('route.SystemUserUpdate')
|
||||
} else {
|
||||
title = this.$t('route.SystemUserCreate')
|
||||
}
|
||||
return title + '-' + this.$t('assets.CommonUser')
|
||||
},
|
||||
systemUserProtocolComponent() {
|
||||
const query = this.$route.query
|
||||
const protocol = query.protocol
|
||||
switch (protocol) {
|
||||
case 'ssh':
|
||||
return SSH
|
||||
case 'rdp':
|
||||
return RDP
|
||||
case 'vnc':
|
||||
return VNC
|
||||
case 'telnet':
|
||||
return TELNET
|
||||
case 'mysql':
|
||||
case 'oracle':
|
||||
case 'postgresql':
|
||||
case 'mariadb':
|
||||
case 'sqlserver':
|
||||
case 'redis':
|
||||
case 'mongodb':
|
||||
return Database
|
||||
case 'k8s':
|
||||
return K8S
|
||||
default:
|
||||
return SSH
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='less' scoped>
|
||||
|
||||
</style>
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import getFields from '../fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserDatabase',
|
||||
@@ -1,22 +1,59 @@
|
||||
<template>
|
||||
<component :is="systemUserTypeComponent" />
|
||||
<component :is="systemUserProtocolComponent" :title="iTitle" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CommonUser from './CommonUser/index'
|
||||
import AdminUser from './AdminUser/index'
|
||||
import SSH from './ssh'
|
||||
import RDP from './rdp'
|
||||
import VNC from './vnc'
|
||||
import Database from './database'
|
||||
import K8S from './k8s'
|
||||
import TELNET from './telnet'
|
||||
|
||||
export default {
|
||||
name: 'SystemUserCreateUpdate',
|
||||
components: { CommonUser, AdminUser },
|
||||
components: { SSH, RDP, VNC, Database },
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
method: {
|
||||
},
|
||||
computed: {
|
||||
systemUserTypeComponent() {
|
||||
const query = this.$route.query
|
||||
const type = query.type || 'common'
|
||||
if (type === 'admin') {
|
||||
return AdminUser
|
||||
iTitle() {
|
||||
const params = this.$route.params
|
||||
let title = ''
|
||||
if (params.id) {
|
||||
title = this.$t('route.SystemUserUpdate')
|
||||
} else {
|
||||
return CommonUser
|
||||
title = this.$t('route.SystemUserCreate')
|
||||
}
|
||||
return title + '-' + this.$t('assets.CommonUser')
|
||||
},
|
||||
systemUserProtocolComponent() {
|
||||
const query = this.$route.query
|
||||
const protocol = query.protocol
|
||||
switch (protocol) {
|
||||
case 'ssh':
|
||||
return SSH
|
||||
case 'rdp':
|
||||
return RDP
|
||||
case 'vnc':
|
||||
return VNC
|
||||
case 'telnet':
|
||||
return TELNET
|
||||
case 'mysql':
|
||||
case 'oracle':
|
||||
case 'postgresql':
|
||||
case 'mariadb':
|
||||
case 'sqlserver':
|
||||
case 'redis':
|
||||
case 'mongodb':
|
||||
return Database
|
||||
case 'k8s':
|
||||
return K8S
|
||||
default:
|
||||
return SSH
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import { Required } from '@/components/DataForm/rules'
|
||||
import getFields from '@/views/assets/SystemUser/SystemUserCreateUpdate/fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserSSH',
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import getFields from '../fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserRDP',
|
||||
@@ -24,7 +24,6 @@ export default {
|
||||
username_same_with_user: false,
|
||||
auto_generate_key: false,
|
||||
auto_push_account: false,
|
||||
sudo: '/bin/whoami',
|
||||
shell: '/bin/bash'
|
||||
},
|
||||
fields: [
|
||||
@@ -12,7 +12,7 @@
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import { Required } from '@/components/DataForm/rules'
|
||||
import getFields from '../fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserSSH',
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import getFields from '../fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserTelnet',
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import getFields from '../fields'
|
||||
import getFields from './fields'
|
||||
|
||||
export default {
|
||||
name: 'CommonUserVNC',
|
||||
@@ -1,80 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-alert v-if="helpMessage" type="success">
|
||||
<span v-html="helpMessage" />
|
||||
</el-alert>
|
||||
<GenericListTable :table-config="tableConfig" :header-actions="headerActions" :help-message="helpMessage" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { GenericListTable } from '@/layout/components'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GenericListTable
|
||||
},
|
||||
data() {
|
||||
const vm = this
|
||||
return {
|
||||
tableConfig: {
|
||||
url: '/api/v1/assets/admin-users/',
|
||||
permissions: {
|
||||
resource: 'systemuser'
|
||||
},
|
||||
columns: [
|
||||
'name', 'username', 'assets_amount',
|
||||
'created_by', 'date_created', 'date_updated', 'comment', 'org_name', 'actions'
|
||||
],
|
||||
columnsShow: {
|
||||
min: ['name', 'actions'],
|
||||
default: ['name', 'username', 'assets_amount', 'comment', 'actions']
|
||||
},
|
||||
columnsMeta: {
|
||||
username: {
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
assets_amount: {
|
||||
width: '80px'
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
onUpdate: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserUpdate',
|
||||
params: { id: row.id },
|
||||
query: { protocol: row.protocol, type: 'admin' }
|
||||
})
|
||||
},
|
||||
onClone: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserCreate',
|
||||
query: { protocol: row.protocol, type: 'admin', clone_from: row.id }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
headerActions: {
|
||||
searchConfig: {
|
||||
getUrlQuery: false
|
||||
},
|
||||
createRoute: () => {
|
||||
return {
|
||||
name: 'SystemUserCreate',
|
||||
query: {
|
||||
type: 'admin'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
helpMessage: this.$t('assets.AdminUserListHelpMessage')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -1,98 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-alert v-if="helpMessage" type="success">
|
||||
<span v-html="helpMessage" />
|
||||
</el-alert>
|
||||
<GenericListTable :table-config="tableConfig" :header-actions="headerActions" :help-message="helpMessage" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { GenericListTable } from '@/layout/components'
|
||||
import { ApplicationSystemUserTypes } from '@/views/applications/const'
|
||||
import { AssetProtocols } from '@/views/assets/const'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GenericListTable
|
||||
},
|
||||
data() {
|
||||
const vm = this
|
||||
return {
|
||||
tableConfig: {
|
||||
url: '/api/v1/assets/system-users/?type=common',
|
||||
columns: [
|
||||
'name', 'username', 'username_same_with_user', 'protocol', 'login_mode',
|
||||
'assets_amount', 'applications_amount', 'priority',
|
||||
'created_by', 'date_created', 'date_updated', 'comment', 'org_name', 'actions'
|
||||
],
|
||||
columnsShow: {
|
||||
min: ['name', 'actions'],
|
||||
default: [
|
||||
'name', 'username', 'protocol', 'login_mode', 'assets_amount',
|
||||
'applications_amount', 'comment', 'actions'
|
||||
]
|
||||
},
|
||||
columnsMeta: {
|
||||
username: {
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
protocol: {
|
||||
width: '100px'
|
||||
},
|
||||
username_same_with_user: {
|
||||
width: '150px',
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
login_mode: {
|
||||
width: '120px'
|
||||
},
|
||||
assets_amount: {
|
||||
width: '80px'
|
||||
},
|
||||
applications_amount: {
|
||||
width: '80px'
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
onUpdate: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserUpdate', params: { id: row.id }, query: { protocol: row.protocol }
|
||||
})
|
||||
},
|
||||
onClone: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserCreate', query: { protocol: row.protocol, clone_from: row.id }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
headerActions: {
|
||||
hasCreate: false,
|
||||
createRoute: 'SystemUserCreate',
|
||||
searchConfig: {
|
||||
exclude: ['type', 'protocol']
|
||||
},
|
||||
moreCreates: {
|
||||
callback: (option) => {
|
||||
vm.$router.push({ name: 'SystemUserCreate', query: { protocol: option.name.toLowerCase() }})
|
||||
},
|
||||
dropdown: [
|
||||
...AssetProtocols,
|
||||
...ApplicationSystemUserTypes
|
||||
]
|
||||
}
|
||||
},
|
||||
helpMessage: this.$t('assets.SystemUserListHelpMessage')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -1,44 +1,97 @@
|
||||
<template>
|
||||
<TabPage :active-menu.sync="config.activeMenu" :submenu="config.submenu">
|
||||
<keep-alive>
|
||||
<component :is="config.activeMenu" />
|
||||
</keep-alive>
|
||||
</TabPage>
|
||||
<GenericListPage
|
||||
:table-config="tableConfig"
|
||||
:header-actions="headerActions"
|
||||
:help-message="helpMessage"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { TabPage } from '@/layout/components'
|
||||
import CommonUserList from './CommonUserList'
|
||||
import AdminUserList from './AdminUserList'
|
||||
import { GenericListPage } from '@/layout/components'
|
||||
import { ApplicationSystemUserTypes } from '@/views/applications/const'
|
||||
import { AssetProtocols } from '@/views/assets/const'
|
||||
|
||||
export default {
|
||||
name: 'Index',
|
||||
components: {
|
||||
TabPage,
|
||||
CommonUserList,
|
||||
AdminUserList
|
||||
GenericListPage
|
||||
},
|
||||
data() {
|
||||
const vm = this
|
||||
return {
|
||||
config: {
|
||||
activeMenu: 'CommonUserList',
|
||||
submenu: [
|
||||
{
|
||||
title: this.$t('assets.CommonUser'),
|
||||
name: 'CommonUserList',
|
||||
hidden: () => !this.$hasPerm('assets.view_systemuser')
|
||||
tableConfig: {
|
||||
url: '/api/v1/assets/system-users/?type=common',
|
||||
columns: [
|
||||
'name', 'username', 'username_same_with_user', 'protocol', 'login_mode',
|
||||
'assets_amount', 'applications_amount', 'priority',
|
||||
'created_by', 'date_created', 'date_updated', 'comment', 'org_name', 'actions'
|
||||
],
|
||||
columnsShow: {
|
||||
min: ['name', 'actions'],
|
||||
default: [
|
||||
'name', 'username', 'protocol', 'login_mode', 'assets_amount',
|
||||
'applications_amount', 'comment', 'actions'
|
||||
]
|
||||
},
|
||||
columnsMeta: {
|
||||
username: {
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
title: this.$t('assets.AdminUser'),
|
||||
name: 'AdminUserList',
|
||||
hidden: () => !this.$hasPerm('assets.view_systemuser')
|
||||
protocol: {
|
||||
width: '100px'
|
||||
},
|
||||
username_same_with_user: {
|
||||
width: '150px',
|
||||
formatterArgs: {
|
||||
showFalse: false
|
||||
}
|
||||
},
|
||||
login_mode: {
|
||||
width: '120px'
|
||||
},
|
||||
assets_amount: {
|
||||
width: '80px'
|
||||
},
|
||||
applications_amount: {
|
||||
width: '80px'
|
||||
},
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
onUpdate: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserUpdate', params: { id: row.id }, query: { protocol: row.protocol }
|
||||
})
|
||||
},
|
||||
onClone: ({ row }) => {
|
||||
vm.$router.push({
|
||||
name: 'SystemUserCreate', query: { protocol: row.protocol, clone_from: row.id }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
headerActions: {
|
||||
hasCreate: false,
|
||||
createRoute: 'SystemUserCreate',
|
||||
searchConfig: {
|
||||
exclude: ['type', 'protocol']
|
||||
},
|
||||
moreCreates: {
|
||||
callback: (option) => {
|
||||
vm.$router.push({ name: 'SystemUserCreate', query: { protocol: option.name.toLowerCase() }})
|
||||
},
|
||||
dropdown: [
|
||||
...AssetProtocols,
|
||||
...ApplicationSystemUserTypes
|
||||
]
|
||||
}
|
||||
},
|
||||
helpMessage: this.$t('assets.SystemUserListHelpMessage')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user