Check permissions before aggregating fields

This commit is contained in:
rijkvanzanten
2021-05-25 14:30:33 -04:00
parent ce9296162c
commit 51bc0a8c9f

View File

@@ -98,6 +98,16 @@ export class AuthorizationService {
const allowedFields = permissions.fields || [];
if (ast.query.aggregate && allowedFields.includes('*') === false) {
for (const [_operation, aliasMap] of Object.entries(ast.query.aggregate)) {
if (!aliasMap) continue;
for (const [column, _alias] of Object.entries(aliasMap)) {
if (allowedFields.includes(column) === false) throw new ForbiddenException();
}
}
}
for (const childNode of ast.children) {
if (childNode.type !== 'field') {
validateFields(childNode);