getConfigInfo()

in source/api/services/search/lib/metadata.js [143:231]


            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);
                    });
                });
            });