mirror of
https://github.com/strapi/strapi.git
synced 2025-11-01 10:23:34 +00:00
fix: sanitize recieved query
This commit is contained in:
parent
f07dc6fac4
commit
efeb53f7ab
@ -126,27 +126,26 @@ export default {
|
||||
fieldsToSelect.push(PUBLISHED_AT_ATTRIBUTE);
|
||||
}
|
||||
|
||||
const queryParams = {
|
||||
sort: mainField,
|
||||
...query,
|
||||
fields: fieldsToSelect, // cannot select other fields as the user may not have the permissions
|
||||
filters: {}, // cannot filter for RBAC reasons
|
||||
};
|
||||
|
||||
const permissionChecker = getService('permission-checker').create({
|
||||
userAbility,
|
||||
model: targetedModel.uid,
|
||||
});
|
||||
const permissionQuery = await permissionChecker.sanitizedQuery.read(queryParams);
|
||||
const permissionQuery = await permissionChecker.sanitizedQuery.read(query);
|
||||
|
||||
const queryParams = {
|
||||
sort: mainField,
|
||||
fields: fieldsToSelect, // cannot select other fields as the user may not have the permissions
|
||||
...permissionQuery,
|
||||
};
|
||||
|
||||
if (!isEmpty(idsToOmit)) {
|
||||
addFiltersClause(permissionQuery, { id: { $notIn: idsToOmit } });
|
||||
addFiltersClause(queryParams, { id: { $notIn: idsToOmit } });
|
||||
}
|
||||
|
||||
// searching should be allowed only on mainField for permission reasons
|
||||
if (_q) {
|
||||
const _filter = isOperatorOfType('where', query._filter) ? query._filter : '$containsi';
|
||||
addFiltersClause(permissionQuery, { [mainField]: { [_filter]: _q } });
|
||||
addFiltersClause(queryParams, { [mainField]: { [_filter]: _q } });
|
||||
}
|
||||
|
||||
if (entityId) {
|
||||
@ -169,10 +168,10 @@ export default {
|
||||
.select(`${alias}.id`)
|
||||
.getKnexQuery();
|
||||
|
||||
addFiltersClause(permissionQuery, { id: { $notIn: knexSubQuery } });
|
||||
addFiltersClause(queryParams, { id: { $notIn: knexSubQuery } });
|
||||
}
|
||||
|
||||
ctx.body = await strapi.entityService.findPage(targetedModel.uid, permissionQuery);
|
||||
ctx.body = await strapi.entityService.findPage(targetedModel.uid, queryParams);
|
||||
},
|
||||
|
||||
async findExisting(ctx: any) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user