joola.io.engine
Version:
joola.io's Framework Engine
83 lines (78 loc) • 2.4 kB
JavaScript
/**
* joola.io
*
* Copyright Joola Smart Solutions, Ltd. <info@joo.la>
*
* Licensed under GNU General Public License 3.0 or later.
* Some rights reserved. See LICENSE, AUTHORS.
*
* @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
*/
var
router = require('./index'),
url = require('url'),
auth = require('../lib/auth/manager');
/**
* Lists all available dimensions. You can provide parameters and ask for a specific data source and datatable.
*
* The returned list will contain only dimensions authorized for the authenticated user.
*
* @method list
* @param {string} [datasourceid] Datasource ID.
* @param {string} [datatableid] Datatable ID.
* @return {object} json structure listing all dimensions.
*/
exports.list = {
name: 'reports/list',
description: 'i list all reports available',
inputs: {
required: [],
optional: ['datasourceid', 'datatableid']
},
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
if (!req.user)
return router.responseError(new router.AuthErrorTemplate('Missing user token'), req, res);
response.reports = [];
_.each(joola.config.content.reports, function (report) {
if (auth.hasRole(report.roles, req.user._roles))
response.reports.push(report);
});
return router.responseSuccess(response, req, res);
}
};
/**
* Lists all available dimensions. You can provide parameters and ask for a specific data source and datatable.
*
* The returned list will contain only dimensions authorized for the authenticated user.
*
* @method get
* @param {string} [dimensionid] Dimension ID.
* @return {object} json structure holding the dimension details.
*/
exports.get = {
name: 'reports.get',
description: 'i get a specific report',
inputs: {
required: ['id'],
optional: []
},
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
if (!req.user)
return router.responseError(new router.AuthErrorTemplate('Missing user token'), req, res);
var _report = _.find(joola.config.content.reports, function (report) {
return report.id == req.params.id;
});
if (_report) {
if (auth.hasRole(_report.roles, req.user._roles)) {
response.report = _report;
}
}
return router.responseSuccess(response, req, res);
}
};