tellform/config/passport_helpers.js
2016-08-25 17:54:16 -07:00

55 lines
1.2 KiB
JavaScript

"use strict";
var config = require("./config");
var passport = require("passport");
var User = require('mongoose').model('User');
module.exports.isAuthenticatedOrApiKey = function isAuthenticated(req, res, next) {
debugger;
if (req.isAuthenticated()) {
return next();
} else {
// Try authenticate with API KEY
if (req.headers.apikey || req.query.apikey || req.body.apikey) {
passport.authenticate("localapikey", function (err, user, info) {
if (err)
return res.sendStatus(500);
if (!user)
return res.status(401).send(info.message || "");
req.login(user, function(err) {
if (err) return res.sendStatus(500);
req.user = user;
return next();
});
})(req, res, next);
} else {
return res.sendStatus(401);
}
}
};
module.exports.hasRole = function hasRole(roleRequired) {
if (!roleRequired)
throw new Error("Required role needs to be set");
return function(req, res, next) {
return module.exports.isAuthenticated(req, res, function() {
if (req.user && req.user.roles && req.user.roles.indexOf(roleRequired) !== -1)
next();
else
res.sendStatus(403);
});
};
};
module.exports.hasAdminRole = function hasAdminRole() {
return module.exports.hasRole("admin");
};