diff --git a/server/controllers/docHandlers.js b/server/controllers/docHandlers.js index c252da5..d39995a 100644 --- a/server/controllers/docHandlers.js +++ b/server/controllers/docHandlers.js @@ -137,6 +137,27 @@ const retrieveDocList = (req, res) => { }); }; +const searchDocList = (req, res) => { + Roles.checkRole(req, {document:["retrieve"]}, function(roleErr){ + if (roleErr) { + return res.status(roleErr.status).json({error:roleErr.info}); + } + // add here + Doc.find({$and:[{$or:[{"privacy.level":"PUBLIC"}, {"privacy.level":"RESTRICTED"}, {$and:[{"privacy.level":"PRIVATE"}, + {owner_id:req.user._id}]}, {$and:[{"privacy.level":"SHARED"}, + {"privacy.members":{$elemMatch:{$eq:req.user._id}}}]}, {"owner_id":req.user._id} ]}, + {$or:[{title:/req.body.searchTerm/i}, + {content:/req.body.content/i}]}]}, function(err, results){ + if (err || !results) { + return res.status(404).json({error:"Unable to retrieve your documents"}); + } + if (results) { + res.status(200).json({documentList:results}); + } + }); + }); +}; + const updateDoc = (req, res) => { // add entire text field into revision collection // push revision id to revisions array @@ -310,4 +331,4 @@ const removeUser = (req, res) => { }); }); }; -module.exports = {createDoc, retrieveDoc, lockDoc, unlockDoc, retrieveDocList, updateDoc, deleteDoc, setPrivacy, inviteUser, removeUser}; +module.exports = {createDoc, retrieveDoc, lockDoc, unlockDoc, retrieveDocList, searchDocList, updateDoc, deleteDoc, setPrivacy, inviteUser, removeUser}; diff --git a/server/routes/docs.js b/server/routes/docs.js index 2895951..c7c1be4 100644 --- a/server/routes/docs.js +++ b/server/routes/docs.js @@ -5,6 +5,7 @@ const docControllers = require('../controllers/docHandlers'); router.post('/create', docControllers.createDoc); router.post('/retrieve/:documentId', docControllers.retrieveDoc); router.post('/retrieveAll', docControllers.retrieveDocList); +router.post('/search', docControllers.searchDocList); router.post('/lock/:documentId', docControllers.lockDoc); router.post('/unlock/:documentId', docControllers.unlockDoc); router.post('/update/:documentId', docControllers.updateDoc);