in source/api/services/search/lib/metadata.js [152:240]
getConfigInfo(function(err, config) {
if (err || _.isEmpty(config)) {
console.log(err);
cb({error: {message: 'No valid app configuration data available.'}}, null);
}
accessValidator.getUserGroups(ticket.userid, function(err, data) {
if (err) {
console.log(err);
cb({error: {message: 'No valid permission.'}}, null);
return;
}
//-------------------------------------------------------------
// Set search body
//-------------------------------------------------------------
let body = [];
let owned_packages = {
query: {
bool: {
must: {
query_string: {
query: "*"
}
}
},
bool: {
filter: {
bool: {
should: [{match: {owner: ticket.userid}}]
}
}
}
},
size: 0
};
let accessible_packages = {
query: {
bool: {
must: {
query_string: {
query: "*"
}
}
}
},
size: 0
};
if (ticket.role.toLowerCase() != 'admin') {
let filter = [];
filter.push({match: {"owner": ticket.userid}});
data.Groups.map(group => {filter.push({match: {"groups": group.GroupName}});});
accessible_packages.query.bool.filter = {
bool: {
should: filter
}
};
}
body.push({});
body.push(owned_packages);
body.push({});
body.push(accessible_packages);
//-------------------------------------------------------------
// Execute Search
//-------------------------------------------------------------
let client = require('elasticsearch').Client({
hosts: `${config.Item.setting.esurl}`,
connectionClass: require('http-aws-es'),
amazonES: {
region: process.env.AWS_REGION,
credentials: creds
}
});
client.msearch({
body: body
}).then(function(body) {
console.log(body);
let _results = {
owned_packages: body.responses[0].hits.total,
accessible_packages: body.responses[1].hits.total
};
cb(null, _results);
}, function(error) {
console.trace(error.message);
cb(error, null);
});
});
});