summaryrefslogtreecommitdiff
path: root/server/lib/middleware.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/middleware.js')
-rw-r--r--server/lib/middleware.js29
1 files changed, 27 insertions, 2 deletions
diff --git a/server/lib/middleware.js b/server/lib/middleware.js
index 27b9c04..9d6236a 100644
--- a/server/lib/middleware.js
+++ b/server/lib/middleware.js
@@ -5,6 +5,7 @@ var passport = require('passport'),
_ = require('lodash'),
config = require('../../config.json'),
User = require('./schemas/User'),
+ Collaborator = require('./schemas/Collaborator'),
Project = require('./schemas/Project');
@@ -36,7 +37,7 @@ var middleware = {
ensureLocals: function (req, res, next) {
res.locals.token = req.csrfToken();
res.locals.logged_in = req.isAuthenticated()
- res.locals.user = req.user || { id: undefined }
+ res.locals.user = req.user || { _id: undefined }
res.locals.config = config
res.locals.profile = null
res.locals.opt = {}
@@ -63,8 +64,32 @@ var middleware = {
req.project = null
next()
}
- }
+ },
+
+ ensureIsCollaborator: function(req, res, next) {
+ req.isCollaborator = false
+ req.isOwner = false
+ if (! req.user || ! req.project) {
+ next()
+ }
+ else if (String(req.user._id) === String(req.project.user_id)) {
+ req.isOwner = true
+ next()
+ }
+ else {
+ Collaborator.findOne({ user_id: req.user._id, project_id: req.project._id }, function(err, collab) {
+ if (err || ! collab) {
+ next()
+ }
+ else {
+ req.isCollaborator = true
+ next()
+ }
+ })
+ }
+ },
+
}
module.exports = middleware