var express = require('express') var router = express.Router() let Note = require('@models/Note') let User = require('@models/User') let ShareNote = require('@models/ShareNote') let userId = null let masterKey = null // middleware that is specific to this router router.use(function setUserId (req, res, next) { //Session key is required to continue if(!req.headers.sessionId){ next('Unauthorized') } if(req.headers.userId){ userId = req.headers.userId masterKey = req.headers.masterKey next() } }) // // Note actions // router.post('/get', function (req, res) { Note.get(userId, req.body.noteId, masterKey) .then( noteObject => { delete noteObject.snippet_salt delete noteObject.salt delete noteObject.encrypted_share_password_key res.send(noteObject) }) }) router.post('/delete', function (req, res) { Note.delete(userId, req.body.noteId, masterKey) .then( data => res.send(data) ) }) router.post('/create', function (req, res) { Note.create(userId, req.body.title, req.body.text, masterKey) .then( id => res.send({id}) ) }) router.post('/update', function (req, res) { Note.update(userId, req.body.noteId, req.body.text, req.body.title, req.body.color, req.body.pinned, req.body.archived, req.body.hash, masterKey) .then( id => res.send({id}) ) }) router.post('/search', function (req, res) { Note.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters, masterKey) .then( NoteAndTags => { res.send(NoteAndTags) }) }) router.post('/reindex', function (req, res) { Note.reindex(userId, masterKey) .then( data => { res.send(data) }) }) // // Update single note attributes // router.post('/setpinned', function (req, res) { Note.setPinned(userId, req.body.noteId, req.body.pinned) .then( results => { res.send(results) }) }) router.post('/setarchived', function (req, res) { Note.setArchived(userId, req.body.noteId, req.body.archived) .then( results => { res.send(results) }) }) router.post('/settrashed', function (req, res) { Note.setTrashed(userId, req.body.noteId, req.body.trashed, masterKey) .then( results => { res.send(results) }) }) // // Share Note Actions // router.post('/getshareinfo', function (req, res) { ShareNote.getShareInfo(userId, req.body.noteId, req.body.rawTextId) .then(results => res.send(results)) }) router.post('/shareadduser', function (req, res) { // ShareNote.addUser(userId, req.body.noteId, req.body.rawTextId, req.body.username, masterKey) User.getByUserName(req.body.username) .then( user => { return ShareNote.addUserToSharedNote(userId, req.body.noteId, user.id, masterKey) }) .then( ({success, shareUserId}) => { res.send(success) }) }) router.post('/shareremoveuser', function (req, res) { // (userId, noteId, shareNoteUserId, shareUserId, masterKey) ShareNote.removeUserFromSharedNote(userId, req.body.noteId, req.body.shareUserNoteId, masterKey) .then(results => res.send(results)) }) router.post('/enableshare', function (req, res) { //Create Shared Encryption Key for Note ShareNote.migrateToShared(userId, req.body.noteId, masterKey) .then(results => res.send(true)) }) router.post('/getsharekey', function (req, res) { //Get Shared Key for a note ShareNote.decryptSharedKey(userId, req.body.noteId, masterKey) .then(results => res.send(results)) }) router.post('/disableshare', function (req, res) { //Removed shared encryption key from note ShareNote.migrateToNormal(userId, req.body.noteId, masterKey) .then(results => res.send(true)) }) module.exports = router