diff --git a/src/components/AccountCreateUpdateForm/index.vue b/src/components/AccountCreateUpdateForm/index.vue index d0f0ce7a7..2b968a9fb 100644 --- a/src/components/AccountCreateUpdateForm/index.vue +++ b/src/components/AccountCreateUpdateForm/index.vue @@ -37,11 +37,14 @@ export default { encryptPassword: { type: Boolean, default: true + }, + addTemplate: { + type: Boolean, + default: false } }, data() { return { - selectedTemplate: false, loading: true, usernameChanged: false, defaultPrivilegedAccounts: ['root', 'administrator'], @@ -82,6 +85,7 @@ export default { }, template: { component: Select2, + rules: [Required], el: { multiple: false, ajax: { @@ -92,17 +96,12 @@ export default { } }, hidden: () => { - return this.platform || this.asset - }, - on: { - change: ([event]) => { - this.selectedTemplate = !!event - } + return this.platform || this.asset || !this.addTemplate } }, on_invalid: { rules: [Required], - label: this.$t('ops.RunasPolicy'), + label: this.$t('accounts.AccountPolicy'), helpText: this.$t('accounts.BulkCreateStrategy'), hidden: () => { return this.platform || this.asset @@ -124,7 +123,7 @@ export default { } }, hidden: () => { - return this.selectedTemplate + return this.addTemplate } }, username: { @@ -143,12 +142,12 @@ export default { } }, hidden: () => { - return this.selectedTemplate + return this.addTemplate } }, privileged: { hidden: () => { - return this.selectedTemplate + return this.addTemplate } }, su_from: { @@ -170,51 +169,46 @@ export default { secret: { label: this.$t('assets.Password'), component: UpdateToken, - hidden: (formValue) => formValue.secret_type !== 'password' || this.selectedTemplate + hidden: (formValue) => formValue.secret_type !== 'password' || this.addTemplate }, ssh_key: { label: this.$t('assets.PrivateKey'), component: UploadSecret, - hidden: (formValue) => formValue.secret_type !== 'ssh_key' || this.selectedTemplate + hidden: (formValue) => formValue.secret_type !== 'ssh_key' || this.addTemplate }, passphrase: { label: this.$t('assets.Passphrase'), component: UpdateToken, - hidden: (formValue) => formValue.secret_type !== 'ssh_key' || this.selectedTemplate + hidden: (formValue) => formValue.secret_type !== 'ssh_key' || this.addTemplate }, token: { label: this.$t('assets.Token'), component: UploadSecret, - hidden: (formValue) => formValue.secret_type !== 'token' || this.selectedTemplate + hidden: (formValue) => formValue.secret_type !== 'token' || this.addTemplate }, access_key: { id: 'access_key', label: this.$t('assets.AccessKey'), component: UploadSecret, - hidden: (formValue) => formValue.secret_type !== 'access_key' || this.selectedTemplate + hidden: (formValue) => formValue.secret_type !== 'access_key' || this.addTemplate }, secret_type: { type: 'radio-group', options: [], hidden: () => { - return this.selectedTemplate + return this.addTemplate } }, push_now: { helpText: this.$t('accounts.AccountPush.WindowsPushHelpText'), hidden: () => { const automation = this.iPlatform.automation || {} - return !automation.push_account_enabled || !automation.ansible_enabled || !this.$hasPerm('accounts.push_account') - } - }, - is_active: { - hidden: () => { - return this.selectedTemplate + return !automation.push_account_enabled || !automation.ansible_enabled || !this.$hasPerm('accounts.push_account') || this.addTemplate } }, comment: { hidden: () => { - return this.selectedTemplate + return this.addTemplate } } }, diff --git a/src/components/AccountListTable/AccountCreateUpdate.vue b/src/components/AccountListTable/AccountCreateUpdate.vue index f176e1c43..478e0897a 100644 --- a/src/components/AccountListTable/AccountCreateUpdate.vue +++ b/src/components/AccountListTable/AccountCreateUpdate.vue @@ -16,6 +16,7 @@ ref="form" :account="account" :asset="asset" + :add-template="addTemplate" @add="addAccount" @edit="editAccount" /> @@ -37,6 +38,10 @@ export default { type: Boolean, default: false }, + addTemplate: { + type: Boolean, + default: false + }, asset: { type: Object, default: null diff --git a/src/components/AccountListTable/AccountList.vue b/src/components/AccountListTable/AccountList.vue index 89584ac27..e20e2c5f4 100644 --- a/src/components/AccountListTable/AccountList.vue +++ b/src/components/AccountListTable/AccountList.vue @@ -22,6 +22,16 @@ @add="addAccountSuccess" @bulk-create-done="showBulkCreateResult($event)" /> + { + return vm.$hasPerm('accounts.add_account') && !this.$store.getters.currentOrgIsRoot + }, + callback: async() => { + await this.getAssetDetail() + setTimeout(() => { + vm.iAsset = this.asset + vm.account = {} + vm.accountCreateUpdateTitle = this.$t('assets.AddAccount') + vm.showAddTemplateDialog = true + }) + } + }, ...this.headerExtraActions ], extraMoreActions: [ diff --git a/src/i18n/langs/en.json b/src/i18n/langs/en.json index 62bbee6bc..2765773f6 100644 --- a/src/i18n/langs/en.json +++ b/src/i18n/langs/en.json @@ -1,6 +1,7 @@ { "": "", "accounts": { + "AccountPolicy": "Account policy", "BulkCreateStrategy": "When creating accounts that do not meet the requirements, such as key type non-compliance and unique key constraints, the above policies can be selected.", "HistoryDate": "History date", "SameTypeAccountTip": "An account with the same user name and key type already exists", diff --git a/src/i18n/langs/ja.json b/src/i18n/langs/ja.json index f631b5d60..ffdb5a6a6 100644 --- a/src/i18n/langs/ja.json +++ b/src/i18n/langs/ja.json @@ -1,6 +1,7 @@ { "": "", "accounts": { + "AccountPolicy": "アカウントポリシー", "BulkCreateStrategy": "作成時に要件を満たしていないアカウント(例:鍵タイプが規則に合わない、一意のキー制約がある、上記のポリシーを選択することができます)について。", "HistoryDate": "历史日期", "SameTypeAccountTip": "同じユーザー名、鍵タイプのアカウントはすでに存在します", diff --git a/src/i18n/langs/zh.json b/src/i18n/langs/zh.json index fbe7c15cc..e1eefbec6 100644 --- a/src/i18n/langs/zh.json +++ b/src/i18n/langs/zh.json @@ -2,6 +2,7 @@ "": "", "accounts": { "AddAccountResult": "账号批量添加结果", + "AccountPolicy": "账号策略", "BulkCreateStrategy": "创建时对于不符合要求的账号,如:密钥类型不合规,唯一键约束,可选择以上策略。", "AccountTemplate": "账号模版", "HistoryDate": "日期",