From fa934769d6670d494d6714fa5d6e9ea675b49b6f Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 4 Aug 2020 14:24:51 +0530 Subject: [PATCH] projects: Enabling Role based Users in Projects (#382) Enables creating role based users in projects UI for feature: apache/cloudstack#4128 Also addresses issue: #485 Co-authored-by: Pearl Dsilva Signed-off-by: Rohit Yadav --- ui/src/components/header/ProjectMenu.vue | 1 + ui/src/components/view/DetailsTab.vue | 14 + ui/src/components/view/InfoCard.vue | 15 + ui/src/components/view/ListView.vue | 11 + ui/src/components/view/ResourceView.vue | 3 +- ui/src/config/section/project.js | 44 +- ui/src/locales/en.json | 22 + ui/src/store/modules/user.js | 27 +- ui/src/views/AutogenView.vue | 17 +- ui/src/views/project/AccountsTab.vue | 226 +++++++-- .../project/AddAccountOrUserToProject.vue | 332 +++++++++++++ ui/src/views/project/InvitationsTemplate.vue | 23 +- ui/src/views/project/ProjectDetailsTab.vue | 57 +++ .../project/iam/ProjectRolePermissionTab.vue | 442 ++++++++++++++++++ ui/src/views/project/iam/ProjectRoleTab.vue | 308 ++++++++++++ 15 files changed, 1464 insertions(+), 78 deletions(-) create mode 100644 ui/src/views/project/AddAccountOrUserToProject.vue create mode 100644 ui/src/views/project/ProjectDetailsTab.vue create mode 100644 ui/src/views/project/iam/ProjectRolePermissionTab.vue create mode 100644 ui/src/views/project/iam/ProjectRoleTab.vue diff --git a/ui/src/components/header/ProjectMenu.vue b/ui/src/components/header/ProjectMenu.vue index f55f9639714..11d72dd77ea 100644 --- a/ui/src/components/header/ProjectMenu.vue +++ b/ui/src/components/header/ProjectMenu.vue @@ -91,6 +91,7 @@ export default { }, changeProject (index) { const project = this.projects[index] + this.$store.dispatch('ProjectView', project.id) this.$store.dispatch('SetProject', project) this.$store.dispatch('ToggleTheme', project.id === undefined ? 'light' : 'dark') this.$message.success(`Switched to "${project.displaytext}"`) diff --git a/ui/src/components/view/DetailsTab.vue b/ui/src/components/view/DetailsTab.vue index 12f623dc935..bdb63d907f6 100644 --- a/ui/src/components/view/DetailsTab.vue +++ b/ui/src/components/view/DetailsTab.vue @@ -93,6 +93,20 @@ export default { }, $route () { this.dedicatedSectionActive = this.dedicatedRoutes.includes(this.$route.meta.name) + this.fetchProjectAdmins() + } + }, + methods: { + fetchProjectAdmins () { + if (!this.resource.owner) { + return false + } + var owners = this.resource.owner + var projectAdmins = [] + for (var owner of owners) { + projectAdmins.push(Object.keys(owner).includes('user') ? owner.account + '(' + owner.user + ')' : owner.account) + } + this.resource.account = projectAdmins.join() } } } diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index 8e9a0201454..175189eb2bc 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -459,6 +459,21 @@ {{ resource.zone || resource.zonename || resource.zoneid }} +
+
{{ $t('label.owners') }}
+
+ + +
+
{{ $t('label.account') }}
diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index 87aae7261e4..5ab0cf69a11 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -169,6 +169,17 @@ {{ text }} +