Fully Encrypted notes Beta
* Encrypts all notes going to the database * Creates encrypted snippets for loading note title cards * Creates an encrypted search index when note is changed * Migrates users to encrypted notes on login * Creates new encrypted master keys for newly logged in users
This commit is contained in:
@@ -5,15 +5,13 @@ let Notes = require('@models/Note');
|
||||
let ShareNote = require('@models/ShareNote');
|
||||
|
||||
let userId = null
|
||||
let socket = null
|
||||
let masterKey = null
|
||||
|
||||
// middleware that is specific to this router
|
||||
router.use(function setUserId (req, res, next) {
|
||||
if(req.headers.userId){
|
||||
userId = req.headers.userId
|
||||
}
|
||||
if(req.headers.socket){
|
||||
// socket = req.
|
||||
masterKey = req.headers.masterKey
|
||||
}
|
||||
|
||||
next()
|
||||
@@ -23,11 +21,8 @@ router.use(function setUserId (req, res, next) {
|
||||
// Note actions
|
||||
//
|
||||
router.post('/get', function (req, res) {
|
||||
// req.io.emit('welcome_homie', 'Welcome, dont poop from excitement')
|
||||
Notes.get(userId, req.body.noteId, req.body.password)
|
||||
Notes.get(userId, req.body.noteId, req.body.password, masterKey)
|
||||
.then( data => {
|
||||
//Join room when user opens note
|
||||
// req.io.join('note_room')
|
||||
res.send(data)
|
||||
})
|
||||
})
|
||||
@@ -38,17 +33,17 @@ router.post('/delete', function (req, res) {
|
||||
})
|
||||
|
||||
router.post('/create', function (req, res) {
|
||||
Notes.create(userId, req.body.title, req.body.text)
|
||||
Notes.create(userId, req.body.title, req.body.text, masterKey)
|
||||
.then( id => res.send({id}) )
|
||||
})
|
||||
|
||||
router.post('/update', function (req, res) {
|
||||
Notes.update(req.io, userId, req.body.noteId, req.body.text, req.body.title, req.body.color, req.body.pinned, req.body.archived, req.body.password, req.body.hint)
|
||||
Notes.update(req.io, userId, req.body.noteId, req.body.text, req.body.title, req.body.color, req.body.pinned, req.body.archived, req.body.password, req.body.hint, masterKey)
|
||||
.then( id => res.send({id}) )
|
||||
})
|
||||
|
||||
router.post('/search', function (req, res) {
|
||||
Notes.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters)
|
||||
Notes.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters, masterKey)
|
||||
.then( notesAndTags => {
|
||||
res.send(notesAndTags)
|
||||
})
|
||||
@@ -62,6 +57,14 @@ router.post('/difftext', function (req, res) {
|
||||
})
|
||||
})
|
||||
|
||||
router.post('/reindex', function (req, res) {
|
||||
Notes.reindex(userId, masterKey)
|
||||
.then( data => {
|
||||
res.send(data)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
//
|
||||
// Update single note attributes
|
||||
//
|
||||
@@ -116,5 +119,4 @@ router.get('/reindex5yu43prchuj903mrc', function (req, res) {
|
||||
})
|
||||
|
||||
|
||||
|
||||
module.exports = router
|
@@ -2,6 +2,7 @@ var express = require('express')
|
||||
var router = express.Router()
|
||||
|
||||
let User = require('@models/User');
|
||||
const cs = require('@helpers/CryptoString')
|
||||
|
||||
// middleware that is specific to this router
|
||||
router.use(function timeLog (req, res, next) {
|
||||
@@ -31,19 +32,19 @@ router.post('/login', function (req, res) {
|
||||
}
|
||||
|
||||
User.login(username, password)
|
||||
.then(function(loginToken){
|
||||
.then( ({token, userId}) => {
|
||||
|
||||
//Return json web token to user
|
||||
returnData['success'] = true
|
||||
returnData['token'] = loginToken
|
||||
returnData['username'] = username
|
||||
returnData['username'] = username
|
||||
returnData['token'] = token
|
||||
returnData['success'] = true
|
||||
|
||||
res.send(returnData)
|
||||
})
|
||||
.catch(e => {
|
||||
console.log(e)
|
||||
res.send(returnData)
|
||||
})
|
||||
res.send(returnData)
|
||||
return
|
||||
})
|
||||
.catch(e => {
|
||||
console.log(e)
|
||||
res.send(returnData)
|
||||
})
|
||||
})
|
||||
|
||||
// fetch counts of users notes
|
||||
|
Reference in New Issue
Block a user