@contember/engine-content-api 2.1.0-beta.1 → 2.1.0-beta.2
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/development/index.cjs +1 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +2 -1
- package/dist/development/src/ExecutionContainer.cjs +40 -4
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +41 -5
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/acl/PermissionFactory.cjs +29 -15
- package/dist/development/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/development/src/acl/PermissionFactory.js +29 -15
- package/dist/development/src/acl/PermissionFactory.js.map +1 -1
- package/dist/development/src/acl/PredicateFactory.cjs +33 -13
- package/dist/development/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/development/src/acl/PredicateFactory.js +33 -13
- package/dist/development/src/acl/PredicateFactory.js.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.cjs +21 -18
- package/dist/development/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.js +21 -18
- package/dist/development/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +2 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +2 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/production/index.cjs +1 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +2 -1
- package/dist/production/src/ExecutionContainer.cjs +40 -4
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +41 -5
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/acl/PermissionFactory.cjs +29 -15
- package/dist/production/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/production/src/acl/PermissionFactory.js +29 -15
- package/dist/production/src/acl/PermissionFactory.js.map +1 -1
- package/dist/production/src/acl/PredicateFactory.cjs +33 -13
- package/dist/production/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/production/src/acl/PredicateFactory.js +33 -13
- package/dist/production/src/acl/PredicateFactory.js.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.cjs +21 -18
- package/dist/production/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.js +21 -18
- package/dist/production/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +2 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +2 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ExecutionContainer.d.ts +20 -1
- package/dist/types/ExecutionContainer.d.ts.map +1 -1
- package/dist/types/acl/PermissionFactory.d.ts +6 -0
- package/dist/types/acl/PermissionFactory.d.ts.map +1 -1
- package/dist/types/acl/PredicateFactory.d.ts +17 -6
- package/dist/types/acl/PredicateFactory.d.ts.map +1 -1
- package/dist/types/acl/PredicatesInjector.d.ts.map +1 -1
- package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -2
- package/src/ExecutionContainer.ts +57 -4
- package/src/acl/PermissionFactory.ts +48 -15
- package/src/acl/PredicateFactory.ts +38 -9
- package/src/acl/PredicatesInjector.ts +19 -13
- package/src/mapper/select/handlers/FieldsVisitor.ts +2 -1
- package/tests/cases/unit/permissionMerger.test.ts +162 -0
- package/tests/cases/unit/predicatesFactory.test.ts +75 -0
- package/vitest.config.ts +0 -3
|
@@ -71,6 +71,28 @@ const permissions: Acl.Permissions = {
|
|
|
71
71
|
},
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
const throughPermissions: Acl.Permissions = {
|
|
75
|
+
Author: {
|
|
76
|
+
predicates: {
|
|
77
|
+
authorPredicate: {
|
|
78
|
+
isPublic: { eq: true },
|
|
79
|
+
},
|
|
80
|
+
throughPredicate: {
|
|
81
|
+
name: { eq: 'through' },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
operations: {
|
|
85
|
+
read: {
|
|
86
|
+
id: '__merge__authorPredicate__throughPredicate',
|
|
87
|
+
name: '__merge__authorPredicate__throughPredicate',
|
|
88
|
+
image: '__merge__authorPredicate__throughPredicate',
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
Article: permissions.Article,
|
|
93
|
+
Image: permissions.Image,
|
|
94
|
+
}
|
|
95
|
+
|
|
74
96
|
describe('Predicates factory', () => {
|
|
75
97
|
const schema = def.createModel(TestModel)
|
|
76
98
|
|
|
@@ -100,4 +122,57 @@ describe('Predicates factory', () => {
|
|
|
100
122
|
],
|
|
101
123
|
})
|
|
102
124
|
})
|
|
125
|
+
|
|
126
|
+
it('uses root permissions when isRoot is true', () => {
|
|
127
|
+
const predicateFactory = new PredicateFactory(permissions, schema, new VariableInjector(schema, {}), throughPermissions)
|
|
128
|
+
const author = schema.entities['Author']
|
|
129
|
+
const predicate = predicateFactory.create(author, Acl.Operation.read, ['name'], undefined, true)
|
|
130
|
+
assert.deepStrictEqual(predicate, {
|
|
131
|
+
isPublic: { eq: true },
|
|
132
|
+
})
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
it('uses root permissions when isRoot is undefined', () => {
|
|
136
|
+
const predicateFactory = new PredicateFactory(permissions, schema, new VariableInjector(schema, {}), throughPermissions)
|
|
137
|
+
const author = schema.entities['Author']
|
|
138
|
+
const predicate = predicateFactory.create(author, Acl.Operation.read, ['name'], undefined, undefined)
|
|
139
|
+
assert.deepStrictEqual(predicate, {
|
|
140
|
+
isPublic: { eq: true },
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
it('uses allPermissions when isRoot is false', () => {
|
|
145
|
+
const allPerms: Acl.Permissions = {
|
|
146
|
+
...permissions,
|
|
147
|
+
Author: {
|
|
148
|
+
predicates: {
|
|
149
|
+
allPredicate: {
|
|
150
|
+
name: { eq: 'all' },
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
operations: {
|
|
154
|
+
read: {
|
|
155
|
+
id: 'allPredicate',
|
|
156
|
+
name: 'allPredicate',
|
|
157
|
+
image: 'allPredicate',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
}
|
|
162
|
+
const predicateFactory = new PredicateFactory(permissions, schema, new VariableInjector(schema, {}), allPerms)
|
|
163
|
+
const author = schema.entities['Author']
|
|
164
|
+
const predicate = predicateFactory.create(author, Acl.Operation.read, ['name'], undefined, false)
|
|
165
|
+
assert.deepStrictEqual(predicate, {
|
|
166
|
+
name: { eq: 'all' },
|
|
167
|
+
})
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('falls back to root permissions when allPermissions is not provided', () => {
|
|
171
|
+
const predicateFactory = new PredicateFactory(permissions, schema, new VariableInjector(schema, {}))
|
|
172
|
+
const author = schema.entities['Author']
|
|
173
|
+
const predicate = predicateFactory.create(author, Acl.Operation.read, ['name'], undefined, false)
|
|
174
|
+
assert.deepStrictEqual(predicate, {
|
|
175
|
+
isPublic: { eq: true },
|
|
176
|
+
})
|
|
177
|
+
})
|
|
103
178
|
})
|
package/vitest.config.ts
DELETED