You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2018/11/15 16:13:22 UTC
[airavata-django-portal] 09/10: AIRAVATA-2711 Only owners can edit
admins
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
commit e6d9344fd9f963ce55ab635bc9c6acbfb1204d8f
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Nov 15 11:07:15 2018 -0500
AIRAVATA-2711 Only owners can edit admins
---
.../js/group_components/GroupEditor.vue | 4 +--
.../js/group_components/GroupMembersEditor.vue | 34 +++++++++++++++-------
2 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
index 0e28ded..3685df5 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
@@ -17,8 +17,8 @@
</b-form-group>
<b-card title="Group Members" title-tag="h5">
- <group-members-editor :members="localGroup.members" :admins="localGroup.admins" @add-member="addGroupMember"
- @remove-member="removeGroupMember" @change-role-to-member="changeRoleToMember" @change-role-to-admin="changeRoleToAdmin" />
+ <group-members-editor :group="localGroup" @add-member="addGroupMember" @remove-member="removeGroupMember"
+ @change-role-to-member="changeRoleToMember" @change-role-to-admin="changeRoleToAdmin" />
</b-card>
<b-button @click="submitForm" variant="primary">Submit</b-button>
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
index 5e8e1e5..6c9ac66 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
@@ -5,12 +5,21 @@
placeholder="Search for users to add to this group" />
</b-form-group>
<b-table v-if="membersCount > 0" hover :items="currentMembers" :fields="fields" sort-by="name">
+ <template slot="HEAD_role" slot-scope="data">
+ <div class="d-flex">
+ <div>Role</div>
+ <div class="ml-auto mr-2">
+ <i class="fa fa-info-circle text-info align-text-top" v-b-tooltip.hover title="Admins can add and remove group members." />
+ </div>
+ </div>
+ </template>
<template slot="role" slot-scope="data">
- <b-form-select :value="data.item.role" @input="changeRole(data.item, $event)" :options="groupRoleOptions">
+ <b-form-select v-if="group.isOwner" :value="data.item.role" @input="changeRole(data.item, $event)" :options="groupRoleOptions">
</b-form-select>
+ <span v-else>{{ data.value }}</span>
</template>
<template slot="remove" slot-scope="data">
- <b-link @click="removeMember(data.item)">
+ <b-link v-if="data.item.editable" @click="removeMember(data.item)">
<span class="fa fa-trash"></span>
</b-link>
</template>
@@ -19,7 +28,7 @@
</template>
<script>
-import { services } from "django-airavata-api";
+import { models, services } from "django-airavata-api";
import { components } from "django-airavata-common-ui";
export default {
@@ -28,12 +37,8 @@ export default {
"autocomplete-text-input": components.AutocompleteTextInput
},
props: {
- members: {
- type: Array,
- required: true
- },
- admins: {
- type: Array,
+ group: {
+ type: models.Group,
required: true
}
},
@@ -43,6 +48,12 @@ export default {
};
},
computed: {
+ members() {
+ return this.group.members;
+ },
+ admins() {
+ return this.group.admins;
+ },
suggestions() {
if (!this.userProfiles) {
return [];
@@ -87,12 +98,15 @@ export default {
return this.members.map(m => {
const userProfile = this.userProfilesMap[m];
const isAdmin = this.admins.indexOf(m) >= 0;
+ // Owners can edit all members and admins can edit non-admin members
+ const editable = this.group.isOwner || (this.group.isAdmin && !isAdmin);
return {
id: m,
name: userProfile.firstName + " " + userProfile.lastName,
username: userProfile.userId,
email: userProfile.email,
- role: isAdmin ? "ADMIN" : "MEMBER"
+ role: isAdmin ? "ADMIN" : "MEMBER",
+ editable: editable
};
});
},