summaryrefslogtreecommitdiff
path: root/server/lib/middleware.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-08-25 13:12:27 -0400
committerJules Laplace <jules@okfoc.us>2014-08-25 13:40:12 -0400
commit099dfd16940c62e931bf01e7f62b7a45f2b8c654 (patch)
treeb10d4dc452d01783619966a43ea10decc75e4344 /server/lib/middleware.js
parent4ef340497ef24bb2ecacb2c9c4106c24515c874f (diff)
collaborators api
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