|
@@ -2,8 +2,8 @@ import RoleUtils from '~/services/rights/roleUtils'
|
|
|
import {AbilitiesType} from '~/types/interfaces'
|
|
import {AbilitiesType} from '~/types/interfaces'
|
|
|
import {MongoAbility} from "@casl/ability/dist/types/Ability";
|
|
import {MongoAbility} from "@casl/ability/dist/types/Ability";
|
|
|
import {ABILITIES} from "~/types/enum/enums";
|
|
import {ABILITIES} from "~/types/enum/enums";
|
|
|
-import YamlEncoder from "~/services/encoder/yamlEncoder";
|
|
|
|
|
import {read} from "yaml-import";
|
|
import {read} from "yaml-import";
|
|
|
|
|
+import _ from "lodash"
|
|
|
|
|
|
|
|
interface Condition {
|
|
interface Condition {
|
|
|
function: string
|
|
function: string
|
|
@@ -97,14 +97,10 @@ class AbilityBuilder {
|
|
|
buildAbilitiesFromConfig() {
|
|
buildAbilitiesFromConfig() {
|
|
|
const abilitiesByConfig: Array<AbilitiesType> = []
|
|
const abilitiesByConfig: Array<AbilitiesType> = []
|
|
|
|
|
|
|
|
- const doc = YamlEncoder.decode(read(this.configFile))
|
|
|
|
|
- if (doc === null) {
|
|
|
|
|
- throw new Error('Error while reading abilities config file')
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ const doc = read(this.configFile)
|
|
|
const fromConfig = doc.abilities
|
|
const fromConfig = doc.abilities
|
|
|
|
|
|
|
|
- useEach(fromConfig, (ability: { action: ABILITIES, conditions: Array<Condition> }, subject: string) => {
|
|
|
|
|
|
|
+ _.each(fromConfig, (ability: { action: ABILITIES, conditions: Array<Condition> }, subject: string) => {
|
|
|
let { action, conditions } = ability
|
|
let { action, conditions } = ability
|
|
|
|
|
|
|
|
if (!Array.isArray(conditions)) {
|
|
if (!Array.isArray(conditions)) {
|
|
@@ -131,6 +127,7 @@ class AbilityBuilder {
|
|
|
return conditions.every((condition) => this.execAndValidateCondition(condition, subject))
|
|
return conditions.every((condition) => this.execAndValidateCondition(condition, subject))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // noinspection JSUnusedGlobalSymbols
|
|
|
/**
|
|
/**
|
|
|
* Correspondances entre les noms des fonctions définies dans les conditions des fichiers de configuration et
|
|
* Correspondances entre les noms des fonctions définies dans les conditions des fichiers de configuration et
|
|
|
* les méthodes correspondantes
|
|
* les méthodes correspondantes
|