From bb88c34cf87914f5ee89d08fdad4b769ba83779e Mon Sep 17 00:00:00 2001 From: MicLi01 Date: Wed, 12 Dec 2018 11:39:43 -0500 Subject: [PATCH 1/2] search based on content and title --- server/controllers/docHandlers.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/server/controllers/docHandlers.js b/server/controllers/docHandlers.js index c252da5..f47e6d9 100644 --- a/server/controllers/docHandlers.js +++ b/server/controllers/docHandlers.js @@ -137,6 +137,26 @@ 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.params.searchTerm/i}, + {content:/req.params.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 +330,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}; From 103461880f7b26d30c6bc166ac023b94139b7cfb Mon Sep 17 00:00:00 2001 From: melvinheks Date: Wed, 12 Dec 2018 12:23:42 -0500 Subject: [PATCH 2/2] fixed typos, added routes --- server/controllers/docHandlers.js | 7 ++++--- server/routes/docs.js | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/controllers/docHandlers.js b/server/controllers/docHandlers.js index f47e6d9..d39995a 100644 --- a/server/controllers/docHandlers.js +++ b/server/controllers/docHandlers.js @@ -143,10 +143,11 @@ const searchDocList = (req, res) => { 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"}, + 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.params.searchTerm/i}, - {content:/req.params.content/i}]}]}, function(err, results){ + {"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"}); } 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);