@contember/engine-tenant-api 2.1.0-alpha.13 → 2.1.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/dist/development/src/model/authorization/MembershipMatcher.cjs +6 -0
  2. package/dist/development/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  3. package/dist/development/src/model/authorization/MembershipMatcher.js +6 -0
  4. package/dist/development/src/model/authorization/MembershipMatcher.js.map +1 -1
  5. package/dist/development/src/model/service/MembershipValidator.cjs +1 -1
  6. package/dist/development/src/model/service/MembershipValidator.cjs.map +1 -1
  7. package/dist/development/src/model/service/MembershipValidator.js +1 -1
  8. package/dist/development/src/model/service/MembershipValidator.js.map +1 -1
  9. package/dist/production/src/model/authorization/MembershipMatcher.cjs +6 -0
  10. package/dist/production/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  11. package/dist/production/src/model/authorization/MembershipMatcher.js +6 -0
  12. package/dist/production/src/model/authorization/MembershipMatcher.js.map +1 -1
  13. package/dist/production/src/model/service/MembershipValidator.cjs +1 -1
  14. package/dist/production/src/model/service/MembershipValidator.cjs.map +1 -1
  15. package/dist/production/src/model/service/MembershipValidator.js +1 -1
  16. package/dist/production/src/model/service/MembershipValidator.js.map +1 -1
  17. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  18. package/dist/types/model/authorization/MembershipMatcher.d.ts.map +1 -1
  19. package/dist/types/tsconfig.tsbuildinfo +1 -1
  20. package/package.json +12 -12
  21. package/src/model/authorization/MembershipMatcher.ts +6 -0
  22. package/src/model/service/MembershipValidator.ts +1 -1
@@ -6,6 +6,12 @@ class MembershipMatcher {
6
6
  }
7
7
  matches(membership) {
8
8
  return this.memberships.some((invokerMembership) => {
9
+ if (invokerMembership.matchRule === true) {
10
+ return true;
11
+ }
12
+ if (!invokerMembership.matchRule) {
13
+ return false;
14
+ }
9
15
  const matchRule = invokerMembership.matchRule[membership.role];
10
16
  if (!matchRule) {
11
17
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipMatcher.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AACjD,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;;"}
1
+ {"version":3,"file":"MembershipMatcher.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tif (invokerMembership.matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (!invokerMembership.matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AAC7C,UAAA,kBAAkB,cAAc,MAAM;AAClC,eAAA;AAAA,MAAA;AAEJ,UAAA,CAAC,kBAAkB,WAAW;AAC1B,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;;"}
@@ -4,6 +4,12 @@ class MembershipMatcher {
4
4
  }
5
5
  matches(membership) {
6
6
  return this.memberships.some((invokerMembership) => {
7
+ if (invokerMembership.matchRule === true) {
8
+ return true;
9
+ }
10
+ if (!invokerMembership.matchRule) {
11
+ return false;
12
+ }
7
13
  const matchRule = invokerMembership.matchRule[membership.role];
8
14
  if (!matchRule) {
9
15
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipMatcher.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AACjD,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"MembershipMatcher.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tif (invokerMembership.matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (!invokerMembership.matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AAC7C,UAAA,kBAAkB,cAAc,MAAM;AAClC,eAAA;AAAA,MAAA;AAEJ,UAAA,CAAC,kBAAkB,WAAW;AAC1B,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;"}
@@ -11,7 +11,7 @@ class MembershipValidator {
11
11
  if (!schema) {
12
12
  throw new Error();
13
13
  }
14
- return this.resolver.resolve(schema.acl, memberships, schemaUtils.MembershipResolver.UnknownIdentity).errors;
14
+ return this.resolver.resolve(schema.acl, memberships, schemaUtils.MembershipResolver.UnknownIdentity, false).errors;
15
15
  }
16
16
  }
17
17
  Object.defineProperty(exports, "MembershipValidationError", {
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipValidator.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":["MembershipResolver"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAIA,kCACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAaA,YAAAA,mBAAmB,eAAe,EAAE;AAAA,EAAA;AAE5F;;;;;;;;;;"}
1
+ {"version":3,"file":"MembershipValidator.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":["MembershipResolver"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAIA,kCACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAaA,+BAAmB,iBAAiB,KAAK,EAAE;AAAA,EAAA;AAEnG;;;;;;;;;;"}
@@ -10,7 +10,7 @@ class MembershipValidator {
10
10
  if (!schema) {
11
11
  throw new Error();
12
12
  }
13
- return this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors;
13
+ return this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors;
14
14
  }
15
15
  }
16
16
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipValidator.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":[],"mappings":";;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAI,sBACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAa,mBAAmB,eAAe,EAAE;AAAA,EAAA;AAE5F;"}
1
+ {"version":3,"file":"MembershipValidator.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":[],"mappings":";;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAI,sBACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAa,mBAAmB,iBAAiB,KAAK,EAAE;AAAA,EAAA;AAEnG;"}
@@ -6,6 +6,12 @@ class MembershipMatcher {
6
6
  }
7
7
  matches(membership) {
8
8
  return this.memberships.some((invokerMembership) => {
9
+ if (invokerMembership.matchRule === true) {
10
+ return true;
11
+ }
12
+ if (!invokerMembership.matchRule) {
13
+ return false;
14
+ }
9
15
  const matchRule = invokerMembership.matchRule[membership.role];
10
16
  if (!matchRule) {
11
17
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipMatcher.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AACjD,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;;"}
1
+ {"version":3,"file":"MembershipMatcher.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tif (invokerMembership.matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (!invokerMembership.matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AAC7C,UAAA,kBAAkB,cAAc,MAAM;AAClC,eAAA;AAAA,MAAA;AAEJ,UAAA,CAAC,kBAAkB,WAAW;AAC1B,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;;"}
@@ -4,6 +4,12 @@ class MembershipMatcher {
4
4
  }
5
5
  matches(membership) {
6
6
  return this.memberships.some((invokerMembership) => {
7
+ if (invokerMembership.matchRule === true) {
8
+ return true;
9
+ }
10
+ if (!invokerMembership.matchRule) {
11
+ return false;
12
+ }
7
13
  const matchRule = invokerMembership.matchRule[membership.role];
8
14
  if (!matchRule) {
9
15
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipMatcher.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AACjD,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"MembershipMatcher.js","sources":["../../../../../../packages/engine-tenant-api/src/model/authorization/MembershipMatcher.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\nexport type MembershipWithSubMembershipMatchRules =\n\t& Acl.Membership\n\t& {\n\t\tmatchRule: Acl.MembershipMatchRule\n\t}\n\nexport class MembershipMatcher {\n\tconstructor(private readonly memberships: readonly MembershipWithSubMembershipMatchRules[]) {\n\t}\n\n\tmatches(membership: Acl.Membership): boolean {\n\t\treturn this.memberships.some(invokerMembership => {\n\t\t\tif (invokerMembership.matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (!invokerMembership.matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst matchRule = invokerMembership.matchRule[membership.role]\n\t\t\tif (!matchRule) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (matchRule === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst variables = matchRule?.variables\n\t\t\tif (variables === true) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn membership.variables.every(variable => {\n\t\t\t\tconst sourceVariableRule = variables?.[variable.name]\n\t\t\t\tif (!sourceVariableRule) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (sourceVariableRule === true) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst sourceVariable = invokerMembership.variables.find(it => typeof sourceVariableRule === 'string' && it.name === sourceVariableRule)\n\t\t\t\tif (!sourceVariable) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst sourceValues = new Set(sourceVariable.values)\n\t\t\t\treturn variable.values.every(it => sourceValues.has(it))\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"AAQO,MAAM,kBAAkB;AAAA,EAC9B,YAA6B,aAA+D;AAA/D,SAAA,cAAA;AAAA,EAAA;AAAA,EAG7B,QAAQ,YAAqC;AACrC,WAAA,KAAK,YAAY,KAAK,CAAqB,sBAAA;AAC7C,UAAA,kBAAkB,cAAc,MAAM;AAClC,eAAA;AAAA,MAAA;AAEJ,UAAA,CAAC,kBAAkB,WAAW;AAC1B,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,kBAAkB,UAAU,WAAW,IAAI;AAC7D,UAAI,CAAC,WAAW;AACR,eAAA;AAAA,MAAA;AAER,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAER,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,MAAM;AAChB,eAAA;AAAA,MAAA;AAED,aAAA,WAAW,UAAU,MAAM,CAAY,aAAA;AACvC,cAAA,qBAAqB,YAAY,SAAS,IAAI;AACpD,YAAI,CAAC,oBAAoB;AACjB,iBAAA;AAAA,QAAA;AAER,YAAI,uBAAuB,MAAM;AACzB,iBAAA;AAAA,QAAA;AAEF,cAAA,iBAAiB,kBAAkB,UAAU,KAAK,CAAA,OAAM,OAAO,uBAAuB,YAAY,GAAG,SAAS,kBAAkB;AACtI,YAAI,CAAC,gBAAgB;AACb,iBAAA;AAAA,QAAA;AAER,cAAM,eAAe,IAAI,IAAI,eAAe,MAAM;AAClD,eAAO,SAAS,OAAO,MAAM,QAAM,aAAa,IAAI,EAAE,CAAC;AAAA,MAAA,CACvD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH;"}
@@ -11,7 +11,7 @@ class MembershipValidator {
11
11
  if (!schema) {
12
12
  throw new Error();
13
13
  }
14
- return this.resolver.resolve(schema.acl, memberships, schemaUtils.MembershipResolver.UnknownIdentity).errors;
14
+ return this.resolver.resolve(schema.acl, memberships, schemaUtils.MembershipResolver.UnknownIdentity, false).errors;
15
15
  }
16
16
  }
17
17
  Object.defineProperty(exports, "MembershipValidationError", {
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipValidator.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":["MembershipResolver"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAIA,kCACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAaA,YAAAA,mBAAmB,eAAe,EAAE;AAAA,EAAA;AAE5F;;;;;;;;;;"}
1
+ {"version":3,"file":"MembershipValidator.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":["MembershipResolver"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAIA,kCACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAaA,+BAAmB,iBAAiB,KAAK,EAAE;AAAA,EAAA;AAEnG;;;;;;;;;;"}
@@ -10,7 +10,7 @@ class MembershipValidator {
10
10
  if (!schema) {
11
11
  throw new Error();
12
12
  }
13
- return this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors;
13
+ return this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors;
14
14
  }
15
15
  }
16
16
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipValidator.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":[],"mappings":";;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAI,sBACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAa,mBAAmB,eAAe,EAAE;AAAA,EAAA;AAE5F;"}
1
+ {"version":3,"file":"MembershipValidator.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/MembershipValidator.ts"],"sourcesContent":["import { ProjectSchemaResolver } from '../type'\nimport { MembershipValidationError, MembershipValidationErrorType, MembershipResolver } from '@contember/schema-utils'\nimport { Acl } from '@contember/schema'\n\nexport class MembershipValidator {\n\tconstructor(\n\t\tprivate readonly schemaResolver: ProjectSchemaResolver,\n\t\tprivate readonly resolver: MembershipResolver = new MembershipResolver(),\n\t) {}\n\n\tasync validate(project: string, memberships: readonly Acl.Membership[]): Promise<MembershipValidationError[]> {\n\t\tconst schema = await this.schemaResolver.getSchema(project)\n\t\tif (!schema) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn this.resolver.resolve(schema.acl, memberships, MembershipResolver.UnknownIdentity, false).errors\n\t}\n}\n\nexport { MembershipValidationError, MembershipValidationErrorType }\n"],"names":[],"mappings":";;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,gBACA,WAA+B,IAAI,sBACnD;AAFgB,SAAA,iBAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,SAAS,SAAiB,aAA8E;AAC7G,UAAM,SAAS,MAAM,KAAK,eAAe,UAAU,OAAO;AAC1D,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,KAAK,SAAS,QAAQ,OAAO,KAAK,aAAa,mBAAmB,iBAAiB,KAAK,EAAE;AAAA,EAAA;AAEnG;"}