62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
var fs = require('fs');
|
|
|
|
var admins = {};
|
|
|
|
var FILENAME = false;
|
|
|
|
module.exports.init = function(userfile) {
|
|
FILENAME = userfile;
|
|
module.exports.loadFile();
|
|
}
|
|
|
|
module.exports.loadFile = function() {
|
|
if (!FILENAME) throw "No file for user JSON specified";
|
|
fs.readFile(FILENAME, 'utf8', function(err, data) {
|
|
if (err) throw err;
|
|
admins = JSON.parse(data);
|
|
});
|
|
}
|
|
|
|
module.exports.AdminRight = {
|
|
ADMIN: 1,
|
|
MENU: 2,
|
|
RESERVATION: 3
|
|
}
|
|
|
|
module.exports.checkCredentials = function(name, pwd) {
|
|
if (name && pwd && (name in admins) && pwd==admins[name].pwd) {
|
|
// valid
|
|
return true;
|
|
} else {
|
|
// invalid
|
|
return false;
|
|
}
|
|
};
|
|
|
|
module.exports.hasAccess = function(req, section) {
|
|
var name = module.exports.getName(req);
|
|
return (name && admins[name] && admins[name].rights && admins[name].rights[section] && admins[name].rights[module.exports.AdminRight.ADMIN]);
|
|
};
|
|
|
|
module.exports.getName = function(req) {
|
|
if ((typeof req.session === 'undefined') || (typeof req.session.name === 'undefined'))
|
|
return false;
|
|
else
|
|
return req.session.name;
|
|
}
|
|
|
|
module.exports.doLogin = function(req, name, pwd) {
|
|
if (module.exports.checkCredentials(name, pwd) && !(typeof req.session === 'undefined')) {
|
|
req.session.name = name;
|
|
}
|
|
return module.exports.getName(req);
|
|
}
|
|
|
|
module.exports.doLogout = function(req) {
|
|
if (!(typeof req.session === 'undefined')) {
|
|
req.session.destroy();
|
|
}
|
|
return module.exports.getName(req);
|
|
}
|
|
|