Tons of fixes to prepare for staged releases.

This commit is contained in:
Max committed 2026-10-28 10:11:40 -07:00
1 parent 9f37d3faf1
commit 5bebe072b2
24 files changed
+1110 -474

No files matched your search

+24 -4
View File
@@ -7,8 +7,6 @@ let router = express.Router()
let Attachment = require('@models/Attachment')
let Note = require('@models/Note')
let userId = null
let masterKey = null
// middleware that is specific to this router
router.use(function setUserId (req, res, next) {
@@ -19,23 +17,33 @@ router.use(function setUserId (req, res, next) {
}
if(req.headers.userId){
userId = req.headers.userId
masterKey = req.headers.masterKey
next()
}
})
router.post('/search', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Attachment.search(userId, req.body.noteId, req.body.attachmentType, req.body.offset, req.body.setSize, req.body.includeShared)
.then( data => res.send(data) )
})
router.post('/textsearch', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Attachment.textSearch(userId, req.body.searchTerm)
.then( data => res.send(data) )
})
router.post('/update', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Attachment.update(userId, req.body.attachmentId, req.body.updatedText, req.body.noteId)
.then( result => {
Note.reindex(userId, req.body.noteId)
@@ -44,11 +52,19 @@ router.post('/update', function (req, res) {
})
router.post('/delete', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Attachment.delete(userId, req.body.attachmentId)
.then( data => res.send(data) )
})
router.post('/upload', upload.single('file'), function (req, res, next) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
//Create attachment with file information and node id
const noteId = parseInt(req.body.noteId)
@@ -67,6 +83,10 @@ router.post('/upload', upload.single('file'), function (req, res, next) {
// get push key
router.post('/getbookmarklet', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Attachment.getPushkeyBookmarklet(userId)
.then( data => res.send(data) )
+44 -40
View File
@@ -1,41 +1,45 @@
//
// /api/cycle-tracking
//
var express = require('express')
var router = express.Router()
let CycleTracking = require('@models/CycleTracking');
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()
}
})
//Get quick note text
router.post('/get', function (req, res) {
CycleTracking.get(userId, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/save', function (req, res) {
CycleTracking.save(userId, req.body.cycleData, masterKey)
.then( data => res.send(data) )
})
//
// /api/cycle-tracking
//
var express = require('express')
var router = express.Router()
let CycleTracking = require('@models/CycleTracking');
// 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){
next()
}
})
//Get quick note text
router.post('/get', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
CycleTracking.get(userId, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/save', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
CycleTracking.save(userId, req.body.cycleData, masterKey)
.then( data => res.send(data) )
})
module.exports = router
+52 -44
View File
@@ -1,45 +1,53 @@
//
// /api/metric-tracking
//
var express = require('express')
var router = express.Router()
let MetricTracking = require('@models/MetricTracking');
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()
}
})
router.post('/get', function (req, res) {
MetricTracking.get(userId, masterKey)
.then( data => res.send(data) )
})
router.post('/create', function (req, res) {
MetricTracking.create(userId, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/save', function (req, res) {
MetricTracking.save(userId, req.body.cycleData, masterKey)
.then( data => res.send(data) )
})
//
// /api/metric-tracking
//
var express = require('express')
var router = express.Router()
let MetricTracking = require('@models/MetricTracking');
// 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){
next()
}
})
router.post('/get', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
MetricTracking.get(userId, masterKey)
.then( data => res.send(data) )
})
router.post('/create', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
MetricTracking.create(userId, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/save', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
MetricTracking.save(userId, req.body.cycleData, masterKey)
.then( data => res.send(data) )
})
module.exports = router
+60 -4
View File
@@ -5,8 +5,6 @@ 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) {
@@ -17,8 +15,6 @@ router.use(function setUserId (req, res, next) {
}
if(req.headers.userId){
userId = req.headers.userId
masterKey = req.headers.masterKey
next()
}
})
@@ -27,6 +23,10 @@ router.use(function setUserId (req, res, next) {
// Note actions
//
router.post('/get', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.get(userId, req.body.noteId, masterKey)
.then( noteObject => {
@@ -39,21 +39,37 @@ router.post('/get', function (req, res) {
})
router.post('/delete', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.delete(userId, req.body.noteId, masterKey)
.then( data => res.send(data) )
})
router.post('/create', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.create(userId, req.body.title, req.body.text, masterKey)
.then( id => res.send({id}) )
})
router.post('/update', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
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) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters, masterKey)
.then( NoteAndTags => {
res.send(NoteAndTags)
@@ -61,6 +77,10 @@ router.post('/search', function (req, res) {
})
router.post('/reindex', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.reindex(userId, masterKey)
.then( data => {
res.send(data)
@@ -72,18 +92,30 @@ router.post('/reindex', function (req, res) {
// Update single note attributes
//
router.post('/setpinned', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.setPinned(userId, req.body.noteId, req.body.pinned)
.then( results => {
res.send(results)
})
})
router.post('/setarchived', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.setArchived(userId, req.body.noteId, req.body.archived)
.then( results => {
res.send(results)
})
})
router.post('/settrashed', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Note.setTrashed(userId, req.body.noteId, req.body.trashed, masterKey)
.then( results => {
res.send(results)
@@ -94,11 +126,19 @@ router.post('/settrashed', function (req, res) {
// Share Note Actions
//
router.post('/getshareinfo', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
ShareNote.getShareInfo(userId, req.body.noteId, req.body.rawTextId)
.then(results => res.send(results))
})
router.post('/shareadduser', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
// ShareNote.addUser(userId, req.body.noteId, req.body.rawTextId, req.body.username, masterKey)
User.getByUserName(req.body.username)
.then( user => {
@@ -111,22 +151,38 @@ router.post('/shareadduser', function (req, res) {
})
router.post('/shareremoveuser', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
// (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) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
//Create Shared Encryption Key for Note
ShareNote.migrateToShared(userId, req.body.noteId, masterKey)
.then(results => res.send(true))
})
router.post('/getsharekey', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
//Get Shared Key for a note
ShareNote.decryptSharedKey(userId, req.body.noteId, masterKey)
.then(results => res.send(results))
})
router.post('/disableshare', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
//Removed shared encryption key from note
ShareNote.migrateToNormal(userId, req.body.noteId, masterKey)
.then(results => res.send(true))
+12 -4
View File
@@ -3,8 +3,6 @@ var router = express.Router()
let QuickNote = require('@models/QuickNote');
let userId = null
let masterKey = null
// middleware that is specific to this router
router.use(function setUserId (req, res, next) {
@@ -15,26 +13,36 @@ router.use(function setUserId (req, res, next) {
}
if(req.headers.userId){
userId = req.headers.userId
masterKey = req.headers.masterKey
next()
}
})
//Get quick note text
router.post('/get', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
QuickNote.get(userId, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/update', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
QuickNote.update(userId, req.body.pushText, masterKey)
.then( data => res.send(data) )
})
//Push text to quick note
router.post('/new', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
QuickNote.newNote(userId)
.then( data => res.send(data) )
})
+28 -4
View File
@@ -3,8 +3,6 @@ var router = express.Router()
let Tags = require('@models/Tag')
let userId = null
let masterKey = null
// middleware that is specific to this router
router.use(function setUserId (req, res, next) {
@@ -15,49 +13,75 @@ router.use(function setUserId (req, res, next) {
}
if(req.headers.userId){
userId = req.headers.userId
masterKey = req.headers.masterKey
next()
}
})
//Get the latest notes the user has created
router.post('/suggest', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.suggest(userId, req.body.noteId, req.body.tagText)
.then( data => res.send(data) )
})
//Get latest tags based on when it was put on a note
router.post('/latest', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.latest(userId, req.body.noteId)
.then( data => res.send(data) )
})
//Get the latest notes the user has created
router.post('/addtonote', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.addToNote(userId, req.body.noteId, req.body.tagText.toLowerCase())
.then( data => res.send(data) )
})
router.post('/removefromnote', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.removeTagFromNote(userId, req.body.tagId)
.then( data => res.send(data) )
})
//Get the latest notes the user has created
router.post('/get', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.get(userId, req.body.noteId)
.then( data => res.send(data) )
})
//Get the latest notes the user has created
router.post('/fornote', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.fornote(userId, req.body.noteId)
.then( data => res.send(data) )
})
//Get all the tags for this user in order of usage
router.post('/usertags', function (req, res) {
//Bind per request. These were module-level singletons shared by every
//concurrent request, so one user's masterKey could overwrite another's.
const { userId, masterKey } = req.headers
Tags.userTags(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters)
.then( data => res.send(data) )
})
-4
View File
@@ -5,8 +5,6 @@ const User = require('@models/User')
const Auth = require('@helpers/Auth')
const cs = require('@helpers/CryptoString')
let userId = null
let masterKey = null
// middleware that is specific to this router
router.use(function setUserId (req, res, next) {
@@ -17,8 +15,6 @@ router.use(function setUserId (req, res, next) {
}
if(req.headers.userId){
userId = req.headers.userId
masterKey = req.headers.masterKey
next()
}
})