@contember/engine-content-api 1.1.0-alpha.3 → 1.1.0-alpha.4

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.
@@ -4,6 +4,7 @@ export declare class Authorizator {
4
4
  private readonly permissions;
5
5
  constructor(permissions: Acl.Permissions);
6
6
  getEntityPermission(operation: Acl.Operation, entity: string): AuthorizationResult;
7
+ getFieldPredicate(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): Acl.Predicate;
7
8
  getFieldPermissions(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): AuthorizationResult;
8
9
  private predicateToResult;
9
10
  isCustomPrimaryAllowed(entity: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Authorizator.d.ts","sourceRoot":"","sources":["../../../src/acl/Authorizator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAGvC,oBAAY,mBAAmB,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAA;AAExD,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,GAAG,CAAC,WAAW;IAGzD,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAgBlF,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB;IAQpJ,OAAO,CAAC,iBAAiB;IAWzB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG/C"}
1
+ {"version":3,"file":"Authorizator.d.ts","sourceRoot":"","sources":["../../../src/acl/Authorizator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAGvC,oBAAY,mBAAmB,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAA;AAExD,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,GAAG,CAAC,WAAW;IAGzD,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAgBlF,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS;IAI5I,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB;IAQpJ,OAAO,CAAC,iBAAiB;IAWzB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -20,9 +20,12 @@ class Authorizator {
20
20
  }
21
21
  return Object.values(fieldPermissions).filter(it => !!it).length > 0 ? 'yes' : 'no';
22
22
  }
23
+ getFieldPredicate(operation, entity, field) {
24
+ var _a, _b, _c;
25
+ return (_c = (_b = (_a = this.permissions[entity]) === null || _a === void 0 ? void 0 : _a.operations[operation]) === null || _b === void 0 ? void 0 : _b[field]) !== null && _c !== void 0 ? _c : false;
26
+ }
23
27
  getFieldPermissions(operation, entity, field) {
24
- var _a, _b;
25
- const fieldPermissions = (_b = (_a = this.permissions[entity]) === null || _a === void 0 ? void 0 : _a.operations[operation]) === null || _b === void 0 ? void 0 : _b[field];
28
+ const fieldPermissions = this.getFieldPredicate(operation, entity, field);
26
29
  if (!fieldPermissions) {
27
30
  return 'no';
28
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Authorizator.js","sourceRoot":"","sources":["../../../src/acl/Authorizator.ts"],"names":[],"mappings":";;;AAAA,8CAAuC;AAKvC,MAAa,YAAY;IACxB,YAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IACzD,CAAC;IAED,mBAAmB,CAAC,SAAwB,EAAE,MAAc;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAA;SACX;QACD,MAAM,iBAAiB,GAA0B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzE,IAAI,SAAS,KAAK,YAAG,CAAC,SAAS,CAAC,MAAM,EAAE;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAClE;QACD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChE,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,IAAI,CAAA;SACX;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACpF,CAAC;IAED,mBAAmB,CAAC,SAA2E,EAAE,MAAc,EAAE,KAAa;;QAC7H,MAAM,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,0CAAE,UAAU,CAAC,SAAS,CAAC,0CAAG,KAAK,CAAC,CAAA;QACjF,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,IAAI,CAAA;SACX;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IAEO,iBAAiB,CAAC,SAAoC;QAC7D,IAAI,CAAC,SAAS,EAAE;YACf,OAAO,IAAI,CAAA;SACX;QACD,IAAI,SAAS,KAAK,IAAI,EAAE;YACvB,OAAO,KAAK,CAAA;SACZ;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAGD,sBAAsB,CAAC,MAAc;;QACpC,OAAO,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAG,MAAM,CAAC,0CAAE,UAAU,0CAAE,aAAa,KAAI,KAAK,CAAA;IACtE,CAAC;CACD;AA1CD,oCA0CC"}
1
+ {"version":3,"file":"Authorizator.js","sourceRoot":"","sources":["../../../src/acl/Authorizator.ts"],"names":[],"mappings":";;;AAAA,8CAAuC;AAKvC,MAAa,YAAY;IACxB,YAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IACzD,CAAC;IAED,mBAAmB,CAAC,SAAwB,EAAE,MAAc;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAA;SACX;QACD,MAAM,iBAAiB,GAA0B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzE,IAAI,SAAS,KAAK,YAAG,CAAC,SAAS,CAAC,MAAM,EAAE;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAClE;QACD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChE,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,IAAI,CAAA;SACX;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACpF,CAAC;IAED,iBAAiB,CAAC,SAA2E,EAAE,MAAc,EAAE,KAAa;;QAC3H,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,0CAAE,UAAU,CAAC,SAAS,CAAC,0CAAG,KAAK,CAAC,mCAAI,KAAK,CAAA;IACzE,CAAC;IAED,mBAAmB,CAAC,SAA2E,EAAE,MAAc,EAAE,KAAa;QAC7H,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QACzE,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,IAAI,CAAA;SACX;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IAEO,iBAAiB,CAAC,SAAoC;QAC7D,IAAI,CAAC,SAAS,EAAE;YACf,OAAO,IAAI,CAAA;SACX;QACD,IAAI,SAAS,KAAK,IAAI,EAAE;YACvB,OAAO,KAAK,CAAA;SACZ;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAGD,sBAAsB,CAAC,MAAc;;QACpC,OAAO,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAG,MAAM,CAAC,0CAAE,UAAU,0CAAE,aAAa,KAAI,KAAK,CAAA;IACtE,CAAC;CACD;AA9CD,oCA8CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldTypeVisitor.d.ts","sourceRoot":"","sources":["../../../../src/schema/entities/FieldTypeVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qBAAa,gBAAiB,YAAW,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;IAEpI,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY;IAIrC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG,iBAAiB;IAM7E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,iBAAiB;IAK/E,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,GAAG,iBAAiB;CAG9G"}
1
+ {"version":3,"file":"FieldTypeVisitor.d.ts","sourceRoot":"","sources":["../../../../src/schema/entities/FieldTypeVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC,qBAAa,gBAAiB,YAAW,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;IAEpI,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY;IAIrC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG,iBAAiB;IAa7E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,iBAAiB;IAK/E,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,GAAG,iBAAiB;CAG9G"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FieldTypeVisitor = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const schema_1 = require("@contember/schema");
6
+ const exception_1 = require("../../exception");
6
7
  class FieldTypeVisitor {
7
8
  constructor(columnTypeResolver, entityTypeProvider, authorizator) {
8
9
  this.columnTypeResolver = columnTypeResolver;
@@ -11,8 +12,15 @@ class FieldTypeVisitor {
11
12
  }
12
13
  visitColumn(entity, column) {
13
14
  const basicType = this.columnTypeResolver.getType(column);
14
- const permissions = this.authorizator.getFieldPermissions(schema_1.Acl.Operation.read, entity.name, column.name);
15
- return column.nullable || permissions === 'maybe' ? basicType : new graphql_1.GraphQLNonNull(basicType);
15
+ const fieldPredicate = this.authorizator.getFieldPredicate(schema_1.Acl.Operation.read, entity.name, column.name);
16
+ const idPredicate = this.authorizator.getFieldPredicate(schema_1.Acl.Operation.read, entity.name, entity.primary);
17
+ if (!fieldPredicate || !idPredicate) {
18
+ throw new exception_1.ImplementationException();
19
+ }
20
+ if (!column.nullable && (fieldPredicate === true || fieldPredicate === idPredicate)) {
21
+ return new graphql_1.GraphQLNonNull(basicType);
22
+ }
23
+ return basicType;
16
24
  }
17
25
  visitHasMany(entity, relation) {
18
26
  const entityType = this.entityTypeProvider.getEntity(relation.target);
@@ -1 +1 @@
1
- {"version":3,"file":"FieldTypeVisitor.js","sourceRoot":"","sources":["../../../../src/schema/entities/FieldTypeVisitor.ts"],"names":[],"mappings":";;;AAAA,qCAAwE;AACxE,8CAA8C;AAK9C,MAAa,gBAAgB;IAC5B,YACkB,kBAAsC,EACtC,kBAAsC,EACtC,YAA0B;QAF1B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,iBAAY,GAAZ,YAAY,CAAc;IAE5C,CAAC;IAEM,WAAW,CAAC,MAAoB,EAAE,MAAuB;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,YAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACvG,OAAO,MAAM,CAAC,QAAQ,IAAI,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,wBAAc,CAAC,SAAS,CAAC,CAAA;IAC9F,CAAC;IAEM,YAAY,CAAC,MAAoB,EAAE,QAAwB;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACrE,OAAO,IAAI,wBAAc,CAAC,IAAI,qBAAW,CAAC,IAAI,wBAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAEM,WAAW,CAAC,MAAoB,EAAE,QAAiD;QACzF,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC;CACD;AAtBD,4CAsBC"}
1
+ {"version":3,"file":"FieldTypeVisitor.js","sourceRoot":"","sources":["../../../../src/schema/entities/FieldTypeVisitor.ts"],"names":[],"mappings":";;;AAAA,qCAAwE;AACxE,8CAA8C;AAI9C,+CAAyD;AAEzD,MAAa,gBAAgB;IAC5B,YACkB,kBAAsC,EACtC,kBAAsC,EACtC,YAA0B;QAF1B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,iBAAY,GAAZ,YAAY,CAAc;IAE5C,CAAC;IAEM,WAAW,CAAC,MAAoB,EAAE,MAAuB;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACxG,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACxG,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE;YACpC,MAAM,IAAI,mCAAuB,EAAE,CAAA;SACnC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,WAAW,CAAC,EAAE;YACpF,OAAO,IAAI,wBAAc,CAAC,SAAS,CAAC,CAAA;SACpC;QACD,OAAO,SAAS,CAAA;IACjB,CAAC;IAEM,YAAY,CAAC,MAAoB,EAAE,QAAwB;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACrE,OAAO,IAAI,wBAAc,CAAC,IAAI,qBAAW,CAAC,IAAI,wBAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAEM,WAAW,CAAC,MAAoB,EAAE,QAAiD;QACzF,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC;CACD;AA7BD,4CA6BC"}