diff --git a/ui/public/locales/ar.json b/ui/public/locales/ar.json
index e8e4db66cb59..45a15c774bfa 100644
--- a/ui/public/locales/ar.json
+++ b/ui/public/locales/ar.json
@@ -12,6 +12,8 @@
"label.account.id": "Account ID",
"label.account.name": "Account Name",
"label.account.specific": "Account-Specific",
+"label.account.type.domain.admin": "مسؤول النطاق",
+"label.account.type.normal": "عادي (مستخدم)",
"label.accounts": "Accounts",
"label.accounttype": "Account Type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/ca.json b/ui/public/locales/ca.json
index d3e417eb821e..680ac6e25d2e 100644
--- a/ui/public/locales/ca.json
+++ b/ui/public/locales/ca.json
@@ -12,6 +12,8 @@
"label.account.id": "Account ID",
"label.account.name": "Account Name",
"label.account.specific": "Account-Specific",
+"label.account.type.domain.admin": "Administrador de domini",
+"label.account.type.normal": "Normal (Usuari)",
"label.accounts": "Accounts",
"label.accounttype": "Account Type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/de_DE.json b/ui/public/locales/de_DE.json
index 2fee92021638..7f2b6dc18e2c 100644
--- a/ui/public/locales/de_DE.json
+++ b/ui/public/locales/de_DE.json
@@ -24,6 +24,8 @@
"label.account.id": "Benutzerkonto-ID",
"label.account.name": "Benutzerkonto-Name",
"label.account.specific": "Besonderheiten des Benutzerkontos",
+"label.account.type.domain.admin": "Domänen-Administrator",
+"label.account.type.normal": "Normal (Benutzer)",
"label.accounts": "Benutzerkonten",
"label.accounttype": "Benutzerkontotyp",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/el_GR.json b/ui/public/locales/el_GR.json
index 566e182b8fad..a34a07b6a980 100644
--- a/ui/public/locales/el_GR.json
+++ b/ui/public/locales/el_GR.json
@@ -28,6 +28,8 @@
"label.account.id": "Αναγνωριστικό λογαριασμού",
"label.account.name": "Όνομα λογαριασμού",
"label.account.specific": "Συγκεκριμένα χαρακτηριστικά του λογαριασμού",
+"label.account.type.domain.admin": "Διαχειριστής Τομέα",
+"label.account.type.normal": "Κανονικός (Χρήστης)",
"label.accounts": "Λογαριασμοί",
"label.accounttype": "Τύπος λογαριασμού",
"label.access.kubernetes.nodes": "Πρόσβαση στους κόμβους Κυβερνητών",
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index f57460efa482..d7270f75e83a 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -40,6 +40,8 @@
"label.account.id": "Account ID",
"label.account.name": "Account name",
"label.account.specific": "Account-specific",
+"label.account.type.domain.admin": "Domain Admin",
+"label.account.type.normal": "Normal (User)",
"label.accounts": "Accounts",
"label.accountstate": "Account state",
"label.accounttype": "Account type",
@@ -1597,6 +1599,7 @@
"label.limits": "Limits",
"label.limits.configure": "Configure limits",
"label.link": "Link",
+"label.link.account.to.ldap": "Link account to LDAP",
"label.link.domain.to.ldap": "Link domain to LDAP",
"label.linklocalip": "Link-local/Control IP address",
"label.linux": "Linux",
diff --git a/ui/public/locales/es.json b/ui/public/locales/es.json
index b7a409adad1e..6fd928cb3575 100644
--- a/ui/public/locales/es.json
+++ b/ui/public/locales/es.json
@@ -12,6 +12,8 @@
"label.account.id": "ID de la cuenta",
"label.account.name": "Nombre de cuenta",
"label.account.specific": "espec\u00edficas de la cuenta",
+"label.account.type.domain.admin": "Administrador de dominio",
+"label.account.type.normal": "Normal (Usuario)",
"label.accounts": "Cuentas",
"label.accounttype": "Tipo de Cuenta",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/fr_FR.json b/ui/public/locales/fr_FR.json
index 424f4749aa35..cba715c4a00d 100644
--- a/ui/public/locales/fr_FR.json
+++ b/ui/public/locales/fr_FR.json
@@ -12,6 +12,8 @@
"label.account.id": "ID de compte",
"label.account.name": "Nom de compte",
"label.account.specific": "Sp\u00e9cifique au compte",
+"label.account.type.domain.admin": "Administrateur de domaine",
+"label.account.type.normal": "Normal (Utilisateur)",
"label.accounts": "Comptes",
"label.accounttype": "Type Compte",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/hi.json b/ui/public/locales/hi.json
index 9d7440b92626..9a04301378ae 100644
--- a/ui/public/locales/hi.json
+++ b/ui/public/locales/hi.json
@@ -3,6 +3,8 @@
"label.access": "एक्सेस",
"label.accesskey": "एक्सेस की",
"label.account": "खाता",
+"label.account.type.domain.admin": "डोमेन व्यवस्थापक",
+"label.account.type.normal": "सामान्य (उपयोगकर्ता)",
"label.accounts": "लेखा",
"label.accounttype": "खाता प्रकार",
"label.aclid": "ACL",
diff --git a/ui/public/locales/hu.json b/ui/public/locales/hu.json
index ae58379d343c..bfbec26fbef2 100644
--- a/ui/public/locales/hu.json
+++ b/ui/public/locales/hu.json
@@ -12,6 +12,8 @@
"label.account.id": "Sz\u00e1mla azonos\u00edt\u00f3",
"label.account.name": "Sz\u00e1mla n\u00e9v",
"label.account.specific": "Sz\u00e1mla-specifikus",
+"label.account.type.domain.admin": "Tartomány rendszergazda",
+"label.account.type.normal": "Normál (Felhasználó)",
"label.accounts": "Sz\u00e1ml\u00e1k",
"label.accounttype": "Sz\u00e1mla t\u00edpus",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/it_IT.json b/ui/public/locales/it_IT.json
index a2907b71f235..50c13ad9bc16 100644
--- a/ui/public/locales/it_IT.json
+++ b/ui/public/locales/it_IT.json
@@ -12,6 +12,8 @@
"label.account.id": "ID dell'Account",
"label.account.name": "Nome Account",
"label.account.specific": "Specifico dell'Account",
+"label.account.type.domain.admin": "Amministratore di dominio",
+"label.account.type.normal": "Normale (Utente)",
"label.accounts": "Utenti",
"label.accounttype": "Account Type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/ja_JP.json b/ui/public/locales/ja_JP.json
index b7f32d7a2e12..a66a9f978506 100644
--- a/ui/public/locales/ja_JP.json
+++ b/ui/public/locales/ja_JP.json
@@ -53,6 +53,8 @@
"label.account.id": "アカウントID",
"label.account.name": "アカウント名",
"label.account.specific": "アカウント固有",
+ "label.account.type.domain.admin": "ドメイン管理者",
+ "label.account.type.normal": "通常 (ユーザー)",
"label.accounts": "アカウント",
"label.accounttype": "アカウントタイプ",
"label.access.kubernetes.nodes": "Kubernetesノードに接続",
diff --git a/ui/public/locales/ko_KR.json b/ui/public/locales/ko_KR.json
index a951b859b48e..b46cf86f00c1 100644
--- a/ui/public/locales/ko_KR.json
+++ b/ui/public/locales/ko_KR.json
@@ -28,6 +28,8 @@
"label.account.id": "\uacc4\uc815 ID",
"label.account.name": "\uacc4\uc815 \uc774\ub984",
"label.account.specific": "\uace0\uc720 \uacc4\uc815",
+"label.account.type.domain.admin": "도메인 관리자",
+"label.account.type.normal": "일반 (사용자)",
"label.accounts": "\uacc4\uc815",
"label.accounttype": "\uacc4\uc815 \uc720\ud615",
"label.acl.export": "ACL \ub0b4\ubcf4\ub0b4\uae30",
diff --git a/ui/public/locales/nb_NO.json b/ui/public/locales/nb_NO.json
index 586d1fc5b259..1a687df60597 100644
--- a/ui/public/locales/nb_NO.json
+++ b/ui/public/locales/nb_NO.json
@@ -12,6 +12,8 @@
"label.account.id": "Konto ID",
"label.account.name": "Kontonavn",
"label.account.specific": "Kontospesifikk",
+"label.account.type.domain.admin": "Domeneadministrator",
+"label.account.type.normal": "Normal (Bruker)",
"label.accounts": "Kontoer",
"label.accounttype": "Kontotype",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/nl_NL.json b/ui/public/locales/nl_NL.json
index 15b1bbb13941..e763cb9581e3 100644
--- a/ui/public/locales/nl_NL.json
+++ b/ui/public/locales/nl_NL.json
@@ -12,6 +12,8 @@
"label.account.id": "Account ID",
"label.account.name": "Account Naam",
"label.account.specific": "Account-specifiek",
+"label.account.type.domain.admin": "Domeinbeheerder",
+"label.account.type.normal": "Normaal (Gebruiker)",
"label.accounts": "Accounts",
"label.accounttype": "Account type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/pl.json b/ui/public/locales/pl.json
index fbbbf612bc1d..987cd9b80b91 100644
--- a/ui/public/locales/pl.json
+++ b/ui/public/locales/pl.json
@@ -12,6 +12,8 @@
"label.account.id": "ID konta",
"label.account.name": "Nazwa konta",
"label.account.specific": "Account-Specific",
+"label.account.type.domain.admin": "Administrator domeny",
+"label.account.type.normal": "Zwykły (Użytkownik)",
"label.accounts": "Konta",
"label.accounttype": "Account Type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/pt_BR.json b/ui/public/locales/pt_BR.json
index 8fba779b1d12..ab5430219fbe 100644
--- a/ui/public/locales/pt_BR.json
+++ b/ui/public/locales/pt_BR.json
@@ -36,6 +36,8 @@
"label.account.id": "ID da conta",
"label.account.name": "Nome da conta",
"label.account.specific": "Espec\u00edfico da conta",
+"label.account.type.domain.admin": "Administrador de domínio",
+"label.account.type.normal": "Normal (Usuário)",
"label.accounts": "Contas",
"label.accountstate": "Estado da conta",
"label.accounttype": "Tipo de conta",
diff --git a/ui/public/locales/ru_RU.json b/ui/public/locales/ru_RU.json
index 4fb3788bc511..5537d7cca993 100644
--- a/ui/public/locales/ru_RU.json
+++ b/ui/public/locales/ru_RU.json
@@ -12,6 +12,8 @@
"label.account.id": "ID \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438",
"label.account.name": "\u0418\u043c\u044f \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438",
"label.account.specific": "\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u043d\u0442\u0430",
+"label.account.type.domain.admin": "Администратор домена",
+"label.account.type.normal": "Обычный (Пользователь)",
"label.accounts": "\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438",
"label.accounttype": "Account Type",
"label.acl.export": "Export ACL rules",
diff --git a/ui/public/locales/te.json b/ui/public/locales/te.json
index dbbda2d99c08..d707dde6e59c 100644
--- a/ui/public/locales/te.json
+++ b/ui/public/locales/te.json
@@ -37,6 +37,8 @@
"label.account.id": "ఖాతా ID",
"label.account.name": "ఖాతా పేరు",
"label.account.specific": "ఖాతా-నిర్దిష్ట",
+ "label.account.type.domain.admin": "డొమైన్ నిర్వాహకుడు",
+ "label.account.type.normal": "సాధారణ (వినియోగదారు)",
"label.accounts": "ఖాతాలు",
"label.accountstate": "ఖాతా స్థితి",
"label.accounttype": "ఖాతా రకం",
diff --git a/ui/public/locales/zh_CN.json b/ui/public/locales/zh_CN.json
index 9536bab7ee43..8756e1908b45 100644
--- a/ui/public/locales/zh_CN.json
+++ b/ui/public/locales/zh_CN.json
@@ -61,6 +61,8 @@
"label.account.id": "\u5E10\u6237\u6807\u8BC6\u7801",
"label.account.name": "\u5E10\u6237\u540D\u79F0",
"label.account.specific": "\u5E10\u6237\u4E13\u7528",
+ "label.account.type.domain.admin": "域管理员",
+ "label.account.type.normal": "普通(用户)",
"label.accounts": "\u5E10\u6237",
"label.accounttype": "\u5E10\u53F7\u7C7B\u578B",
diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js
index 5766fd8a0f92..d04c683817e5 100644
--- a/ui/src/config/section/account.js
+++ b/ui/src/config/section/account.js
@@ -121,6 +121,34 @@ export default {
},
component: shallowRef(defineAsyncComponent(() => import('@/views/iam/AddLdapAccount.vue')))
},
+ {
+ api: 'linkAccountToLdap',
+ icon: 'LinkOutlined',
+ label: 'label.link.account.to.ldap',
+ docHelp: 'adminguide/accounts.html#using-an-ldap-server-for-user-authentication',
+ dataView: true,
+ show: (record, store) => {
+ return store.isLdapEnabled
+ },
+ args: ['type', 'domainid', 'ldapdomain', 'account', 'accounttype', 'roleid', 'admin'],
+ mapping: {
+ type: {
+ options: ['GROUP', 'OU']
+ },
+ accounttype: {
+ options: [
+ { id: '0', description: 'label.account.type.normal' },
+ { id: '2', description: 'label.account.type.domain.admin' }
+ ]
+ },
+ domainid: {
+ value: (record) => { return record.domainid }
+ },
+ account: {
+ value: (record) => { return record.name }
+ }
+ }
+ },
{
api: 'updateAccount',
icon: 'edit-outlined',
diff --git a/ui/src/config/section/domain.js b/ui/src/config/section/domain.js
index 706cbf805cfa..db1e72fac203 100644
--- a/ui/src/config/section/domain.js
+++ b/ui/src/config/section/domain.js
@@ -150,7 +150,10 @@ export default {
options: ['GROUP', 'OU']
},
accounttype: {
- options: ['0', '2']
+ options: [
+ { id: '0', description: 'label.account.type.normal' },
+ { id: '2', description: 'label.account.type.domain.admin' }
+ ]
},
domainid: {
value: (record) => { return record.id }
diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue
index 8b492d507a2e..60624a3a6009 100644
--- a/ui/src/views/AutogenView.vue
+++ b/ui/src/views/AutogenView.vue
@@ -339,9 +339,9 @@
- {{ opt }}
+ {{ opt.description ? $t(opt.description) : opt }}
-
- {{ opt }}
+
+ {{ opt.description ? $t(opt.description) : opt }}
AutogenView.vue', () => {
done()
})
+ it('API should be called with the option id when currentAction.mapping option is an {id, description} object', async (done) => {
+ originalFunc.handleResponse = wrapper.vm.handleResponse
+ originalFunc.shouldNavigateBack = wrapper.vm.shouldNavigateBack
+ originalFunc.fetchData = wrapper.vm.fetchData
+ wrapper.vm.handleResponse = jest.fn(async (json, resourceName, action) => { return Promise.resolve() })
+ wrapper.vm.shouldNavigateBack = jest.fn((args) => { return false })
+ wrapper.vm.fetchData = jest.fn()
+ wrapper.vm.form = { column1: 1 }
+
+ const event = document.createEvent('Event')
+ await mockAxios.mockResolvedValue({})
+ await wrapper.setData({
+ showAction: true,
+ currentAction: {
+ api: 'testApiNameCase1',
+ label: 'label.name',
+ params: [{ name: 'column1', type: 'list' }],
+ paramFields: [{ name: 'column1', type: 'list' }],
+ mapping: {
+ column1: {
+ options: [
+ { id: 'column-id-1', description: 'label.column.value.one' },
+ { id: 'column-id-2', description: 'label.column.value.two' }
+ ]
+ }
+ }
+ },
+ resource: {}
+ })
+ await wrapper.vm.execSubmit(event)
+ await flushPromises()
+
+ expect(mockAxios).toHaveBeenCalled()
+ expect(mockAxios).toHaveBeenLastCalledWith({
+ url: '/',
+ method: 'POST',
+ data: common.createDataParams({
+ command: 'testApiNameCase1',
+ response: 'json',
+ column1: 'column-id-2'
+ })
+ })
+ done()
+ })
+
it('API should be called when form has input key not exist in currentAction.mapping, type is list and currentAction.params[input] has id', async (done) => {
originalFunc.handleResponse = wrapper.vm.handleResponse
originalFunc.shouldNavigateBack = wrapper.vm.shouldNavigateBack