Преглед на файлове

fix abilitiesUtils build from config method

Olivier Massot преди 3 години
родител
ревизия
bea1c5891b
променени са 3 файла, в които са добавени 8 реда и са изтрити 9 реда
  1. 7 6
      services/rights/abilityUtils.ts
  2. 1 2
      services/rights/roleUtils.ts
  3. 0 1
      stores/accessProfile.ts

+ 7 - 6
services/rights/abilityUtils.ts

@@ -69,12 +69,8 @@ class AbilityUtils {
      * @return {Array<AbilitiesType>}
      */
     buildAbilities(): Array<AbilitiesType> {
-
         const abilitiesByRoles: Array<AbilitiesType> = this.buildAbilitiesFromRoles(this.accessProfile.roles)
-        this.ability.update(abilitiesByRoles)
-
         const abilitiesByConfig = this.buildAbilitiesFromConfig('./config/abilities/config.yaml')
-
         return abilitiesByRoles.concat(abilitiesByConfig)
     }
 
@@ -131,12 +127,14 @@ class AbilityUtils {
             isShowAdherentList: (parameters: any) => this.organizationProfile.isShowAdherentList,
             isCmf: (parameters: any) => this.organizationProfile.isCmf,
             getWebsite: (parameters: any) => this.organizationProfile.getWebsite,
-
         }
 
+        let hasAbility = true
+
         useEach(services, (handlers: Array<{ function: string, parameters?: Array<any>, result?: any }>, service: string) => {
 
             useEach(handlers, (handler: { function: string, parameters?: Array<any>, result?: any }) => {
+
                 const expectedResult: boolean = handler.result ?? true;
                 const parametersArray = handler.parameters ?? []
 
@@ -144,12 +142,15 @@ class AbilityUtils {
                     const actualResult = handlerMap[handler.function](parameters ?? null)
 
                     if (actualResult !== expectedResult) {
+                        hasAbility = false
                         return false
                     }
                 })
+                if (!hasAbility) { return false }
             })
+            if (!hasAbility) { return false }
         })
-        return true
+        return hasAbility
     }
 
     /**

+ 1 - 2
services/rights/roleUtils.ts

@@ -125,7 +125,7 @@ class RoleUtils {
     useEach(roles, (role) => {
       if ((match = regex.exec(role)) !== null) {
         const subject = match[2]
-        const action = match[3]
+        const action = match[3] ?? ''
 
         if (subject) {
           abilities.push({
@@ -133,7 +133,6 @@ class RoleUtils {
             subject: subject.toLowerCase()
           })
         }
-
       }
     })
 

+ 0 - 1
stores/accessProfile.ts

@@ -64,7 +64,6 @@ export const useAccessProfileStore = defineStore('accessProfile', () => {
     return switchId.value ?? (id.value ?? 0)
   })
 
-
   // Actions
   const setMultiAccesses = (organizations: any) => {
     useEach(organizations, (organization: BaseOrganizationProfile) => {