|
|
@@ -37,44 +37,13 @@ class AbilityBuilder {
|
|
|
this.organizationProfile = organizationProfile
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Construit les habilités de l'utilisateur selon son profil et met à jour MongoAbility en fonction
|
|
|
- */
|
|
|
- setupAbilities() {
|
|
|
- // Nécessaire pour que l'update des habilités soit correcte après la phase SSR
|
|
|
- this.ability.update(this.accessProfile.abilities)
|
|
|
-
|
|
|
- // Au moment où l'on effectue une action organizationProfileStore.setProfile, il faut aller récupérer
|
|
|
- // les différentes habilités que l'utilisateur peut effectuer. (Tout cela se passe en SSR)
|
|
|
- const unsubscribe = this.organizationProfile.$onAction(({
|
|
|
- name, // name of the action
|
|
|
- store, // store instance, same as `someStore`
|
|
|
- args, // array of parameters passed to the action
|
|
|
- after, // hook after the action returns or resolves
|
|
|
- onError, // hook if the action throws or rejects
|
|
|
- }: any) => {
|
|
|
- after((result: any)=>{
|
|
|
- if (name === 'setProfile'){
|
|
|
- //On construit les habilités
|
|
|
- this.buildAbilities();
|
|
|
-
|
|
|
- //On les store puis on update le service ability pour le mettre à jour.
|
|
|
- this.accessProfile.abilities = this.abilities
|
|
|
-
|
|
|
- // Unsubscribe pour éviter les memory leaks
|
|
|
- unsubscribe()
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Construit et renvoie l'ensemble des habilités de l'utilisateur, qu'elles soient issues de ses roles
|
|
|
* ou de la configuration
|
|
|
*
|
|
|
* @return {Array<AbilitiesType>}
|
|
|
*/
|
|
|
- buildAbilities() {
|
|
|
+ buildAbilities(): Array<AbilitiesType> {
|
|
|
// Build from roles
|
|
|
this.abilities = this.buildAbilitiesFromRoles()
|
|
|
this.ability.update(this.abilities)
|
|
|
@@ -82,6 +51,8 @@ class AbilityBuilder {
|
|
|
// Build from config
|
|
|
this.abilities = this.abilities.concat(this.buildAbilitiesFromConfig())
|
|
|
this.ability.update(this.abilities)
|
|
|
+
|
|
|
+ return this.abilities
|
|
|
}
|
|
|
|
|
|
/**
|