|
@@ -182,12 +182,28 @@ export default {
|
|
|
*/
|
|
|
getData: isAdminRequired(async function getSet(session, page, pageSize, properties, sort, queries, operator, cb) {
|
|
|
const userModel = await DBModule.runJob("GET_MODEL", { modelName: "user" }, this);
|
|
|
+ const blacklistedProperties = [
|
|
|
+ "services.password.password",
|
|
|
+ "services.password.reset.code",
|
|
|
+ "services.password.reset.expires",
|
|
|
+ "services.password.set.code",
|
|
|
+ "services.password.set.expires",
|
|
|
+ "services.github.access_token",
|
|
|
+ "email.verificationToken"
|
|
|
+ ];
|
|
|
|
|
|
async.waterfall(
|
|
|
[
|
|
|
// Creates pipeline array
|
|
|
next => next(null, []),
|
|
|
|
|
|
+ // If a query filter property is blacklisted throw error
|
|
|
+ (pipeline, next) => {
|
|
|
+ if (queries.filter(query => blacklistedProperties.includes(query.filter.property)).length > 0)
|
|
|
+ return next("Unable to filter by blacklisted property.");
|
|
|
+ return next(null, pipeline);
|
|
|
+ },
|
|
|
+
|
|
|
// If a filter or property exists for hasPassword, add hasPassword property to all documents
|
|
|
(pipeline, next) => {
|
|
|
// Check if a filter with the hasPassword property exists
|
|
@@ -279,28 +295,9 @@ export default {
|
|
|
// Adds second project stage to aggregation pipeline, responsible for excluding some specific properties
|
|
|
(pipeline, next) => {
|
|
|
pipeline.push({
|
|
|
- $project: {
|
|
|
- "services.password.password": 0,
|
|
|
- "services.password.reset.code": 0,
|
|
|
- "services.password.reset.expires": 0,
|
|
|
- "services.password.set.code": 0,
|
|
|
- "services.password.set.expires": 0,
|
|
|
- "services.github.access_token": 0,
|
|
|
- "email.verificationToken": 0
|
|
|
- }
|
|
|
+ $project: Object.fromEntries(blacklistedProperties.map(property => [property, 0]))
|
|
|
});
|
|
|
|
|
|
- // [
|
|
|
- // "services.password",
|
|
|
- // "services.password.password",
|
|
|
- // "services.password.reset.code",
|
|
|
- // "services.password.reset.expires",
|
|
|
- // "services.password.set.code",
|
|
|
- // "services.password.set.expires",
|
|
|
- // "services.github.access_token",
|
|
|
- // "services.email.verificationToken"
|
|
|
- // ]
|
|
|
-
|
|
|
next(null, pipeline);
|
|
|
},
|
|
|
|