You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
924 B
JavaScript
41 lines
924 B
JavaScript
'use strict';
|
|
|
|
var async = require('async');
|
|
var nconf = require('nconf');
|
|
|
|
var admin = require('./admin');
|
|
var translator = require('../translator');
|
|
const groups = require('../groups');
|
|
|
|
var navigation = module.exports;
|
|
|
|
navigation.get = function (uid, callback) {
|
|
async.waterfall([
|
|
admin.get,
|
|
function (data, next) {
|
|
data = data.filter(function (item) {
|
|
return item && item.enabled;
|
|
}).map(function (item) {
|
|
item.originalRoute = item.route;
|
|
|
|
if (!item.route.startsWith('http')) {
|
|
item.route = nconf.get('relative_path') + item.route;
|
|
}
|
|
|
|
Object.keys(item).forEach(function (key) {
|
|
item[key] = translator.unescape(item[key]);
|
|
});
|
|
|
|
return item;
|
|
});
|
|
|
|
async.filter(data, function (navItem, next) {
|
|
if (!navItem.groups.length) {
|
|
return setImmediate(next, null, true);
|
|
}
|
|
groups.isMemberOfAny(uid, navItem.groups, next);
|
|
}, next);
|
|
},
|
|
], callback);
|
|
};
|