diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index f57460efa482..4587e2c198fc 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -264,6 +264,7 @@
"label.add": "Add",
"label.addservices": "Add Services",
"label.add.account": "Add Account",
+"label.add.new.tenant.account": "New Tenant Account",
"label.add.acl.rule": "Add rule",
"label.add.acl": "Add ACL",
"label.add.affinity.group": "Add new Affinity Group",
@@ -3225,6 +3226,7 @@
"message.action.vmsnapshot.delete": "Please confirm that you want to delete this Instance Snapshot.
Please notice that the Instance will be paused before the Snapshot deletion, and resumed after deletion, if it runs on KVM.",
"message.action.vmsnapshot.disk-only.delete": "Please confirm that you want to delete this Instance Snapshot.",
"message.activate.project": "Are you sure you want to activate this project?",
+"message.add.account.warning": "Creating a new account creates a separate tenant with its own resource limits and isolated resources. Users in different accounts cannot share Instances or Volumes. Networks can be shared between accounts when the appropriate permissions are granted. To add a new user to an existing account instead, use the Add User action from the account's list or details view.",
"message.add.custom.action.parameters": "Parameters to be made available while running the custom action.",
"message.add.egress.rule.failed": "Adding new egress rule failed.",
"message.add.egress.rule.processing": "Adding new egress rule...",
diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js
index 5766fd8a0f92..ed0bed488312 100644
--- a/ui/src/config/section/account.js
+++ b/ui/src/config/section/account.js
@@ -104,11 +104,23 @@ export default {
{
api: 'createAccount',
icon: 'plus-outlined',
- label: 'label.add.account',
+ label: 'label.add.new.tenant.account',
listView: true,
popup: true,
component: shallowRef(defineAsyncComponent(() => import('@/views/iam/AddAccount.vue')))
},
+ {
+ api: 'createUser',
+ icon: 'usergroup-add-outlined',
+ label: 'label.add.user',
+ listView: true,
+ dataView: true,
+ popup: true,
+ show: (record, store) => {
+ return ['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) && record.state === 'enabled'
+ },
+ component: shallowRef(defineAsyncComponent(() => import('@/views/iam/AddUser.vue')))
+ },
{
api: 'ldapCreateAccount',
icon: 'user-add-outlined',
diff --git a/ui/src/views/iam/AddAccount.vue b/ui/src/views/iam/AddAccount.vue
index a211fd2d8c3d..5c0b7e141107 100644
--- a/ui/src/views/iam/AddAccount.vue
+++ b/ui/src/views/iam/AddAccount.vue
@@ -25,6 +25,13 @@
:loading="loading"
layout="vertical"
@finish="handleSubmit">
+