'use strict'; var actionUtil = require('sails/lib/hooks/blueprints/actionUtil'); var _ = require('lodash'); /** * todo * * @param {Request} request Request object * @param {Response} response Response object * @param {Function} next Callback function * * @returns {*} */ module.exports = function(request, response, next) { sails.log.verbose(' POLICY - ' + __filename); // Parse where criteria var where = actionUtil.parseCriteria(request); sails.models['projectuser'] .find() .where({user: request.token}) .populate('project') .then( function(projectUsers) { var validIds = _.map(projectUsers, function(projectUser) { return parseInt(projectUser.project.id, 10); }); // We have id condition set so we need to check if that / those are allowed if (where.id) { var currentIds = _.map((!_.isArray(where.id)) ? [where.id] : where.id, function(id) { return parseInt(id, 10); }); where.id = _.intersection(currentIds, validIds); } else { // Otherwise just add id collection to where query where.id = validIds; } request.query = where; return next(); } ); };