Vincent GUFFON 4 years ago
parent
commit
78b2e55919

+ 1 - 0
lang/layout/fr-FR.js

@@ -87,5 +87,6 @@ export default (context, locale) => {
     transition_next_year: 'Passage à l\'année suivante',
     course_duplication: 'Dupliquer les cours hebdomadaires',
     import: 'Importer',
+    multiAccesses: 'Mes structures',
   })
 }

+ 17 - 2
store/profile/access.ts

@@ -1,5 +1,6 @@
 import {$roleUtils} from '~/services/rights/roleUtils'
-import {AbilitiesType, accessState} from "~/types/interfaces";
+import {AbilitiesType, accessState, AccessStore, multiAccessState, organizationState} from "~/types/interfaces";
+import * as _ from "lodash";
 
 export const state = () => ({
   bearer: null,
@@ -20,7 +21,8 @@ export const state = () => ({
   hasLateralMenu: true,
   hasConfigurationMenu: true,
   hasAccessesMenu: true,
-  hasFamilyMenu: true
+  hasFamilyMenu: true,
+  multiAccesses: []
 })
 
 export const mutations = {
@@ -83,6 +85,9 @@ export const mutations = {
   },
   setHasFamilyMenu(state:accessState, hasFamilyMenu:boolean){
     state.hasFamilyMenu = hasFamilyMenu
+  },
+  addMultiAccess(state:accessState, accesses:multiAccessState) {
+    state.multiAccesses.push(accesses)
   }
 }
 
@@ -103,6 +108,16 @@ export const actions = {
     context.commit('setIsMember', $roleUtils.isA('MEMBER', roles_to_array))
     context.commit('setIsOther', $roleUtils.isA('OTHER', roles_to_array))
     context.commit('setRoles', $roleUtils.filterFunctionRoles(roles_to_array))
+    context.commit('setIsAdminAccess', profile.isAdminAccess)
+
+    _.each(profile.accesses, access => {
+      const a:multiAccessState = {
+        id: access.id,
+        organizationId: access.organization.id,
+        organizationName: access.organization.name,
+      }
+      context.commit('addMultiAccess', a)
+    });
 
     //Time to set Oganization Profile
     context.dispatch('profile/organization/setProfile', profile.organization, {root:true})

+ 7 - 1
types/interfaces.d.ts

@@ -82,7 +82,13 @@ interface accessState {
   hasLateralMenu: boolean,
   hasConfigurationMenu: boolean,
   hasAccessesMenu: boolean,
-  hasFamilyMenu: boolean
+  hasFamilyMenu: boolean,
+  multiAccesses: Array<multiAccessState>,
+}
+interface multiAccessState {
+  id: number,
+  organizationId: number,
+  organizationName: string
 }
 interface AccessStore extends Store<{profile:{access:accessState}}> {}
 

+ 5 - 4
use/layout/Menus/myAccessesMenu.ts

@@ -2,6 +2,7 @@ import {AnyStore, ItemMenu, ItemsMenu, Menu} from "~/types/interfaces";
 import BaseMenu from "~/use/layout/Menus/baseMenu";
 import {Ability} from "@casl/ability";
 import {NuxtConfig} from "@nuxt/types/config";
+import * as _ from "lodash";
 
 /**
  * @category Use/layout/Menus
@@ -29,11 +30,11 @@ class MyAccessesMenu extends BaseMenu implements Menu{
   getHeaderMenu():ItemMenu | null {
     const children:ItemsMenu = [];
 
-    if (this.$ability.can('display', 'organization_page')) {
-      children.push(this.constructMenu('organization_page', undefined,'/organization/edit'))
-    }
+    _.each(this.$store.state.profile.access.multiAccesses, access => {
+      children.push(this.constructMenu(access.organizationName, undefined, '/switch/' + access.organizationId, true))
+    })
 
-    return children.length > 0 ? this.constructMenu('configuration', 'fa-building', undefined, undefined, children) : null;
+    return children.length > 0 ? this.constructMenu('multiAccesses', 'fa-building', undefined, undefined, children) : null;
   }
 }
 

+ 1 - 1
use/layout/Menus/websiteMenu.ts

@@ -48,7 +48,7 @@ class WebsiteMenu extends BaseMenu implements Menu{
     children.push(this.constructMenu(this.$store.state.profile.organization.name, undefined, this.getWebsite(this.$store.state.profile.organization), false, undefined, true))
 
     _.each(this.$store.state.profile.organization.parents, parent => {
-      children.push(this.constructMenu(parent.name, undefined, this.getWebsite(parent), false))
+      children.push(this.constructMenu(parent.name, undefined, this.getWebsite(parent), false, undefined, true))
     })
 
     return children.length > 0 ? this.constructMenu('website', 'fa-globe-europe',  undefined, undefined, children) : null;