From 63db3f2e3ddf9c40ca62420f385d70b9de1335ab Mon Sep 17 00:00:00 2001 From: Tobias Kuhnert <tobias.kuhnert@ufz.de> Date: Mon, 9 May 2022 14:22:22 +0200 Subject: [PATCH] progress on permission groups --- components/PlatformBasicDataForm.vue | 13 ++++++++++- store/permissions.ts | 34 ++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/components/PlatformBasicDataForm.vue b/components/PlatformBasicDataForm.vue index 8b458d005..9efb309e3 100644 --- a/components/PlatformBasicDataForm.vue +++ b/components/PlatformBasicDataForm.vue @@ -36,6 +36,14 @@ permissions and limitations under the Licence. ref="basicForm" @submit.prevent > + <v-row> + <v-col> + <v-autocomplete + label="Permission groups" + :items="userGroups" + ></v-autocomplete> + </v-col> + </v-row> <v-row> <v-col cols="12" md="6"> <v-text-field @@ -192,8 +200,11 @@ import { Status } from '@/models/Status' import { Manufacturer } from '@/models/Manufacturer' import { createPlatformUrn } from '@/modelUtils/urnBuilders' +import { mapGetters, mapState } from 'vuex' -@Component +@Component({ + computed:mapGetters('permissions',['userGroups']) +}) export default class PlatformBasicDataForm extends mixins(Rules) { private states: Status[] = [] private manufacturers: Manufacturer[] = [] diff --git a/store/permissions.ts b/store/permissions.ts index edda7b3b0..71d3b8d07 100644 --- a/store/permissions.ts +++ b/store/permissions.ts @@ -1,5 +1,5 @@ import { Api } from '@/services/Api' -import { Commit } from 'vuex' +import { Commit, GetterTree} from 'vuex' import { UserInfo } from '@/models/UserInfo' import { PermissionGroup } from '@/models/PermissionGroup' @@ -13,7 +13,37 @@ const state = (): permissionsState => ({ permissionGroups: [] }) -const getters = {} +const getters = { + memberedPermissionGroups:(state:permissionsState)=>{ + if(state.userInfo!==null){ + const memberMappedIds = state.userInfo.member.map(groupId=>groupId.split('/').pop()) + // return state.permissionGroups.filter(group => state.userInfo!.isMemberOf(group)) + return state.permissionGroups.filter((group)=>{ + return memberMappedIds.find(groupId => groupId===group.id) + }) + } + return [] + }, + administradedPermissionGroups:(state:permissionsState)=>{ + if(state.userInfo !== null){ + const administratedMappedIds = state.userInfo.admin.map(groupId=>groupId.split('/').pop()) + return state.permissionGroups.filter((group)=>{ + return administratedMappedIds.find(groupId => groupId===group.id) + }) + } + return [] + // return state.permissionGroups.filter(group => state.userInfo?.isAdminOf(group)) + }, + userGroups:(state:permissionsState,getters:any)=>{ + if(state.userInfo){ + return [...new Set( + [...getters.memberedPermissionGroups, ...getters.administradedPermissionGroups] + ) + ] + } + return [] + } +} // @ts-ignore const actions: { [key: string]: any; -- GitLab