mirror of
https://github.com/jumpserver/lina.git
synced 2025-11-07 18:08:50 +00:00
Compare commits
12 Commits
pr@v3@fixe
...
v2.20.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68fb4b4e99 | ||
|
|
43badfa0b3 | ||
|
|
d3cfcbf71f | ||
|
|
89141636a2 | ||
|
|
085789f6c5 | ||
|
|
0f47f99786 | ||
|
|
a549f3f81f | ||
|
|
3b54ad8b00 | ||
|
|
e5e976e007 | ||
|
|
ad4ddcd1c0 | ||
|
|
944aba8b26 | ||
|
|
36d8e8cca6 |
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div :class="grouped ? 'el-button-group' : 'el-button-ungroup'">
|
||||
<div :class="grouped ? 'el-button-group' : 'el-button-ungroup'" style="display: flex">
|
||||
<template v-for="action in iActions">
|
||||
<el-dropdown
|
||||
v-if="action.dropdown"
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<template>
|
||||
<ElFormRender
|
||||
ref="form"
|
||||
:class="mobile? 'mobile' : 'desktop'"
|
||||
:content="fields"
|
||||
:form="basicForm"
|
||||
label-position="right"
|
||||
:label-position="labelPosition"
|
||||
label-width="20%"
|
||||
v-bind="$attrs"
|
||||
v-on="$listeners"
|
||||
@@ -68,6 +69,14 @@ export default {
|
||||
basicForm: this.form
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
mobile() {
|
||||
return this.$store.state.app.device === 'mobile'
|
||||
},
|
||||
labelPosition() {
|
||||
return this.mobile ? 'top' : 'right'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 获取表单数据
|
||||
submitForm(formName, addContinue) {
|
||||
@@ -99,27 +108,35 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.el-form ::v-deep .el-form-item {
|
||||
.el-form ::v-deep .el-form-item {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .el-form-item__content {
|
||||
.el-form ::v-deep .el-form-item__content {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .el-form-item__label {
|
||||
.mobile.el-form ::v-deep .el-form-item__content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .el-form-item__label {
|
||||
padding: 0 30px 0 0;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .el-form-item__error {
|
||||
.el-form ::v-deep .el-form-item__error {
|
||||
position: inherit;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .form-group-header {
|
||||
.el-form ::v-deep .form-group-header {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .help-block {
|
||||
.el-form.mobile ::v-deep .form-group-header {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.el-form ::v-deep .help-block {
|
||||
display: block;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 10px;
|
||||
@@ -127,7 +144,7 @@ export default {
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
.el-form ::v-deep .help-block a {
|
||||
.el-form ::v-deep .help-block a {
|
||||
color: #1c84c6;
|
||||
}
|
||||
.form-buttons {
|
||||
|
||||
@@ -65,4 +65,7 @@ export default {
|
||||
margin-right: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.mobile .header-avatar {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
<div class="nav-logo">
|
||||
<Logo v-if="showLogo" :collapse="isCollapse" />
|
||||
</div>
|
||||
<div class="nav-title" :class="{'collapsed': isCollapse}">
|
||||
{{ isTitle }}
|
||||
</div>
|
||||
<div class="active-mobile">
|
||||
<ViewSwitcher />
|
||||
<Organization class="organization" />
|
||||
</div>
|
||||
<div class="nav-title" :class="{'collapsed': isCollapse}">
|
||||
{{ isTitle }}
|
||||
</div>
|
||||
</div>
|
||||
<el-scrollbar wrap-class="scrollbar-wrapper">
|
||||
<el-menu
|
||||
|
||||
@@ -54,6 +54,7 @@ export default {
|
||||
},
|
||||
columnsMeta: {
|
||||
name: {
|
||||
formatter: vm.$hasPerm('users.view_user') ? DetailFormatter : '',
|
||||
formatterArgs: {
|
||||
route: 'UserDetail'
|
||||
},
|
||||
|
||||
@@ -36,7 +36,7 @@ export default {
|
||||
{
|
||||
title: this.$t('assets.SystemUser'),
|
||||
name: 'SystemUserList',
|
||||
hidden: () => !this.$hasPerm('assets.view_systemuser')
|
||||
hidden: () => !this.$hasPerm('assets.view_authbook')
|
||||
},
|
||||
{
|
||||
title: this.$t('assets.AccountList'),
|
||||
|
||||
@@ -237,12 +237,12 @@ export default {
|
||||
name: 'RemoveFromCurrentNode',
|
||||
title: this.$t('assets.RemoveFromCurrentNode'),
|
||||
can: ({ selectedRows }) => {
|
||||
if (!this.$route.query.node) {
|
||||
if (!vm.$route.query.node) {
|
||||
return false
|
||||
}
|
||||
return selectedRows.length > 0 &&
|
||||
!vm.currentOrgIsRoot &&
|
||||
vm.$hasPerm('assets.change_asset')
|
||||
vm.$hasPerm('assets.change_node')
|
||||
},
|
||||
callback: function({ selectedRows, reloadTable }) {
|
||||
const assetsId = []
|
||||
|
||||
@@ -68,7 +68,7 @@ export default {
|
||||
name: 'Push',
|
||||
title: this.$t('common.Push'),
|
||||
type: 'primary',
|
||||
can: this.object.auto_push,
|
||||
can: this.object.auto_push && vm.$hasPerm('assets.push_assetsystemuser'),
|
||||
callback: ({ row }) => {
|
||||
const theUrl = `/api/v1/assets/system-users/${vm.object.id}/tasks/`
|
||||
const data = { action: 'push', assets: [row.asset] }
|
||||
@@ -81,7 +81,7 @@ export default {
|
||||
name: 'Delete',
|
||||
title: this.$t('common.Delete'),
|
||||
type: 'danger',
|
||||
can: !this.$store.getters.currentOrgIsRoot,
|
||||
can: !this.$store.getters.currentOrgIsRoot && vm.$hasPerm('assets.delete_authbook'),
|
||||
callback: (val) => {
|
||||
this.$axios.delete(`/api/v1/assets/system-users-assets-relations/${val.row.id}/`).then(() => {
|
||||
this.$message.success(this.$t('common.deleteSuccessMsg'))
|
||||
@@ -103,7 +103,7 @@ export default {
|
||||
title: this.$t('common.PushSelected'),
|
||||
name: 'PushSelected',
|
||||
can({ selectedRows }) {
|
||||
return selectedRows.length > 0 && vm.object.auto_push
|
||||
return selectedRows.length > 0 && vm.object.auto_push && vm.$hasPerm('assets.push_assetsystemuser')
|
||||
},
|
||||
callback: this.bulkPushCallback.bind(this)
|
||||
},
|
||||
@@ -111,7 +111,7 @@ export default {
|
||||
title: this.$t('assets.TestAssetsConnective'),
|
||||
name: 'TestSelected',
|
||||
can({ selectedRows }) {
|
||||
return selectedRows.length > 0
|
||||
return selectedRows.length > 0 && vm.$hasPerm('assets.test_assetconnectivity')
|
||||
},
|
||||
callback: this.bulkTestCallback.bind(this)
|
||||
}
|
||||
@@ -122,7 +122,8 @@ export default {
|
||||
title: this.$t('assets.TestAssetsConnective'),
|
||||
attrs: {
|
||||
type: 'primary',
|
||||
label: this.$t('common.Test')
|
||||
label: this.$t('common.Test'),
|
||||
disabled: !vm.$hasPerm('assets.test_assetconnectivity')
|
||||
},
|
||||
callbacks: {
|
||||
click: function() {
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
:disabled="asDisabled(!session.can_terminate || !$hasPerm('terminal.terminate_session'))"
|
||||
:disabled="!session.can_terminate"
|
||||
@click="onConnect"
|
||||
>
|
||||
{{ $t('sessions.terminate') }}
|
||||
@@ -45,7 +45,7 @@
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
:disabled="asDisabled(!session.can_join || !$hasPerm('terminal.monitor_session'))"
|
||||
:disabled="!session.can_join"
|
||||
@click="onMonitor"
|
||||
>
|
||||
{{ $t('sessions.Monitor') }}
|
||||
@@ -117,9 +117,6 @@ export default {
|
||||
onMonitor() {
|
||||
const joinUrl = `/luna/monitor/${this.session.id}`
|
||||
window.open(joinUrl, 'height=600, width=800, top=400, left=400, toolbar=no, menubar=no, scrollbars=no, location=no, status=no')
|
||||
},
|
||||
asDisabled(type) {
|
||||
return (type || true) || !this.$hasPerm('tickets.view_ticket')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ export default {
|
||||
return {
|
||||
loading: true,
|
||||
relationConfig: {
|
||||
disabled: !this.$hasPerm('rbac.add_systemrolebinding'),
|
||||
icon: 'fa-user',
|
||||
title: this.$t('common.Members'),
|
||||
objectsAjax: {
|
||||
|
||||
@@ -36,10 +36,10 @@ export default {
|
||||
activeMenu: 'RoleInfo',
|
||||
actions: {
|
||||
canDelete: () => {
|
||||
return vm.hasPermNotBuiltinNotRootOrg(this.role, `rbac.delete_${scopeRole}`)
|
||||
return vm.hasPermNotBuiltin(this.role, `rbac.delete_${scopeRole}`)
|
||||
},
|
||||
canUpdate: () => {
|
||||
return vm.hasPermNotBuiltinNotRootOrg(this.role, `rbac.change_${scopeRole}`)
|
||||
return vm.hasPermNotBuiltin(this.role, `rbac.change_${scopeRole}`)
|
||||
},
|
||||
updateRoute: {
|
||||
name: this.$route.name.replace('Detail', 'Update'),
|
||||
@@ -62,10 +62,8 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPermNotBuiltinNotRootOrg(row, perm) {
|
||||
return !row['builtin'] &&
|
||||
this.$hasPerm(perm) &&
|
||||
!this.$isRootOrg()
|
||||
hasPermNotBuiltin(row, perm) {
|
||||
return !row['builtin'] && this.$hasPerm(perm)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,10 +60,10 @@ export default {
|
||||
actions: {
|
||||
formatterArgs: {
|
||||
canUpdate: ({ row }) => {
|
||||
return this.hasPermNotBuiltinNotRootOrg(row, `rbac.change_${row.scope}role`)
|
||||
return this.hasPermNotBuiltin(row, `rbac.change_${row.scope}role`)
|
||||
},
|
||||
canDelete: ({ row }) => {
|
||||
return this.hasPermNotBuiltinNotRootOrg(row, `rbac.delete_${row.scope}role`)
|
||||
return this.hasPermNotBuiltin(row, `rbac.delete_${row.scope}role`)
|
||||
},
|
||||
updateRoute: {
|
||||
name: 'RoleUpdate',
|
||||
@@ -108,8 +108,8 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPermNotBuiltinNotRootOrg(row, perm) {
|
||||
return !row['builtin'] && this.$hasPerm(perm) && !this.$isRootOrg()
|
||||
hasPermNotBuiltin(row, perm) {
|
||||
return !row['builtin'] && this.$hasPerm(perm)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ export default {
|
||||
}
|
||||
},
|
||||
hidden: () => {
|
||||
return !this.$hasPerm('rbac.change_systemrolebinding')
|
||||
return !this.$hasPerm('rbac.add_systemrolebinding')
|
||||
},
|
||||
value: []
|
||||
},
|
||||
@@ -135,7 +135,7 @@ export default {
|
||||
},
|
||||
hidden: () => {
|
||||
return !this.$store.getters.hasValidLicense ||
|
||||
!this.$hasPerm('rbac.change_orgrolebinding') ||
|
||||
!this.$hasPerm('rbac.add_orgrolebinding') ||
|
||||
this.$store.getters.currentOrgIsRoot
|
||||
},
|
||||
helpText: this.$t('users.HelpText.OrgRoleHelpText')
|
||||
|
||||
Reference in New Issue
Block a user