@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.
- package/dist/src/acl/Authorizator.d.ts +1 -0
- package/dist/src/acl/Authorizator.d.ts.map +1 -1
- package/dist/src/acl/Authorizator.js +5 -2
- package/dist/src/acl/Authorizator.js.map +1 -1
- package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
- package/dist/src/schema/entities/FieldTypeVisitor.js +10 -2
- package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +23 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +110 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/acl/Authorizator.ts +5 -1
- package/src/schema/entities/FieldTypeVisitor.ts +10 -2
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +28 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +110 -0
|
@@ -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
|
-
|
|
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,
|
|
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;
|
|
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
|
|
15
|
-
|
|
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;
|
|
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"}
|