diff --git a/components/PlatformBasicDataForm.vue b/components/PlatformBasicDataForm.vue index 8b458d0055e8095f2a17122560aab4af4c010dc5..9efb309e35e3eeca812f7af81a73c31c13017176 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 edda7b3b0583310257e32c0e057cf0b5a6f673af..71d3b8d07e12d5772cb3ee915364a0a060190f3f 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;