diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-08-25 13:12:27 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-08-25 13:40:12 -0400 |
| commit | 099dfd16940c62e931bf01e7f62b7a45f2b8c654 (patch) | |
| tree | b10d4dc452d01783619966a43ea10decc75e4344 /server/lib/middleware.js | |
| parent | 4ef340497ef24bb2ecacb2c9c4106c24515c874f (diff) | |
collaborators api
Diffstat (limited to 'server/lib/middleware.js')
| -rw-r--r-- | server/lib/middleware.js | 29 |
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 |
