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": "日期",