Files
meanTorrent/app/controllers/users/users.authorization.server.controller.js

54 lines
1006 B
JavaScript
Raw Normal View History

2014-07-31 11:27:14 +03:00
'use strict';
/**
* Module dependencies.
*/
var _ = require('lodash'),
mongoose = require('mongoose'),
User = mongoose.model('User');
/**
* User middleware
*/
exports.userByID = function(req, res, next, id) {
User.findOne({
_id: id
}).exec(function(err, user) {
if (err) return next(err);
if (!user) return next(new Error('Failed to load User ' + id));
req.profile = user;
next();
});
};
/**
* Require login routing middleware
*/
exports.requiresLogin = function(req, res, next) {
if (!req.isAuthenticated()) {
2014-08-02 21:29:38 +03:00
return res.status(401).send({
2014-07-31 11:27:14 +03:00
message: 'User is not logged in'
});
}
next();
};
/**
* User authorizations routing middleware
*/
exports.hasAuthorization = function(roles) {
var _this = this;
return function(req, res, next) {
_this.requiresLogin(req, res, function() {
if (_.intersection(req.user.roles, roles).length) {
return next();
} else {
2014-08-02 21:29:38 +03:00
return res.status(403).send({
2014-07-31 11:27:14 +03:00
message: 'User is not authorized'
});
}
});
};
};