rest/Common.js
'use strict';
/**
* Retrive session information for all page
* language
* user menu
* who is logged
* etc...
*/
exports.getInfos = function(req, res) {
let gt = req.app.utility.gettext;
// detect language from HTTP-ACCEPT
// let lang = require('../node_modules/i18n-abide/lib/i18n').parseAcceptLanguage(req.headers['accept-language']);
// let langCode = 'en';
// if (undefined !== lang[0]) {
// langCode = lang[0].lang;
// }
let sessionUser;
let menu = {
account: null,
admin: null,
user: null
};
if (req.isAuthenticated())
{
sessionUser = {
isAuthenticated: true,
isAccount: req.user.canPlayRoleOf('account'),
isManager: req.user.canPlayRoleOf('manager'),
isAdmin: req.user.canPlayRoleOf('admin'),
lastname: req.user.lastname,
firstname: req.user.firstname,
email: req.user.email,
imageUrl: req.user.imageUrl,
department: req.user.department
};
menu.user = [
{
'text': '<i class="fa fa-sign-out text-danger"></i> '+gt.gettext('Logout'),
'click': 'logout()'
},
{
'text': '<i class="glyphicon glyphicon-cog"></i> '+gt.gettext('Settings'),
'href': '#/user/settings'
}
];
if (sessionUser.isAccount) {
menu.account = [
{
'text': '<i class="fa fa-calendar"></i> '+gt.gettext('Calendar'),
'href': '#/account/calendar'
},
{
'text': '<i class="fa fa-folder text-primary"></i> '+gt.gettext('My requests'),
'href': '#/account/requests'
},
{
'text': '<i class="fa fa-balance-scale text-success"></i> '+gt.gettext('My rights'),
'href': '#/account/beneficiaries'
},
{
'text': '<i class="fa fa-building-o"></i> '+gt.gettext('My department'),
'href': '#/account/department'
}
];
}
if (sessionUser.isManager) {
menu.manager = [
{
'text': '<i class="fa fa-inbox text-primary"></i> '+gt.gettext('Waiting requests'),
'href': '#/manager/waitingrequests'
}
];
}
if (sessionUser.isAdmin) {
menu.admin = [
{
'text': '<i class="fa fa-folder text-primary"></i> '+gt.gettext('Requests'),
'href': '#/admin/requests'
},
{
'text': '<i class="fa fa-folder text-warning"></i> '+gt.gettext('Compulsory leaves'),
'href': '#/admin/compulsoryleaves'
},
{
'text': '<i class="fa fa-cloud-download"></i> '+gt.gettext('Exports'),
'href': '#/admin/exports'
},
{
"divider": true
},
{
'text': '<i class="glyphicon glyphicon-user"></i> '+gt.gettext('Users list'),
'href': '#/admin/users'
},
{
'text': '<i class="fa fa-paper-plane-o"></i> '+gt.gettext('Invitations'),
'href': '#/admin/invitations'
},
{
'text': '<i class="fa fa-building-o"></i> '+gt.gettext('Departments list'),
'href': '#/admin/departments'
},
{
'text': '<i class="fa fa-folder-o"></i> '+gt.gettext('Collections list'),
'href': '#/admin/collections'
},
{
'text': '<i class="fa fa-calendar"></i> '+gt.gettext('Calendars list'),
'href': '#/admin/calendars'
},
{
"divider": true
},
{
'text': '<i class="fa fa-folder-o"></i> '+gt.gettext('Right types'),
'href': '#/admin/types'
},
{
'text': '<i class="fa fa-balance-scale"></i> '+gt.gettext('Rights configuration'),
'href': '#/admin/rights'
},
{
'text': '<i class="fa fa-sort"></i> '+gt.gettext('Sort rights and types'),
'href': '#/admin/rights-sort'
},
{
'text': '<i class="fa fa-calendar-check-o"></i> '+gt.gettext('Recover quantities'),
'href': '#/admin/recoverquantities'
}
];
}
} else {
sessionUser = {
isAuthenticated: false,
isAccount: false,
isManager: false,
isAdmin: false
};
}
let compDoc = req.app.config.company;
/**
* The company object output for REST service
*/
let company = {
name: compDoc.name,
maintenance: compDoc.maintenance,
max_users: compDoc.max_users,
workperiod_recover_request: compDoc.workperiod_recover_request,
login: {
form: compDoc.loginservices.form.enable,
google: compDoc.loginservices.google.enable,
cas: compDoc.loginservices.cas.enable
}
};
if (sessionUser.isAuthenticated) {
company.home_text = compDoc.private_text;
} else {
company.home_text = compDoc.public_text;
}
res.json({
company: company,
lang: req.app.config.language,
baseUrl: req.app.config.url,
sessionUser: sessionUser,
menu: menu,
date: {
short: 'dd-MM-yyyy',
long: 'EEEE d MMMM yyyy',
shortTime: 'dd-MM-yyyy HH:mm Z',
longTime: 'EEEE d MMMM yyyy HH:mm Z'
},
errors: req.flash('error')
});
};
exports.http404 = function(req, res) {
var workflow = req.app.utility.workflow(req, res);
workflow.httpstatus = 404;
workflow.emit('exception', 'Page not found');
};