Skip to content

Commit 6e1525f

Browse files
committed
fix: add raw sql filter ignore for mongodb
1 parent 17144b5 commit 6e1525f

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

adminforth/dataConnectors/mongo.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,10 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS
122122
}
123123

124124
// filter is a AndOr filter
125-
return this.OperatorsMap[filter.operator]((filter as IAdminForthAndOrFilter).subFilters.map((f) => this.getFilterQuery(resource, f)));
125+
return this.OperatorsMap[filter.operator]((filter as IAdminForthAndOrFilter).subFilters
126+
// mongodb should ignore raw sql
127+
.filter((f) => (f as IAdminForthSingleFilter).insecureRawSQL === undefined)
128+
.map((f) => this.getFilterQuery(resource, f)));
126129
}
127130

128131
async getDataWithOriginalTypes({ resource, limit, offset, sort, filters }:
@@ -158,7 +161,13 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS
158161
resource: AdminForthResource,
159162
filters: IAdminForthAndOrFilter,
160163
}): Promise<number> {
161-
164+
if (filters) {
165+
// validate and normalize in case this method is called from dataAPI
166+
const filterValidation = this.validateAndNormalizeFilters(filters, resource);
167+
if (!filterValidation.ok) {
168+
throw new Error(filterValidation.error);
169+
}
170+
}
162171
const collection = this.client.db().collection(resource.table);
163172
const query = filters.subFilters.length ? this.getFilterQuery(resource, filters) : {};
164173
return await collection.countDocuments(query);

0 commit comments

Comments
 (0)