diff --git a/src/routes.js b/src/routes.js index 5bba396d..35e327b1 100644 --- a/src/routes.js +++ b/src/routes.js @@ -260,8 +260,14 @@ module.exports = async ( } const decryptedKey = Encryption.decryptKey({ deviceId, message: req.body.encryptionKey }); - const decryptedMessage = Encryption.decryptMessage({ message: req.body.data, key: decryptedKey, iv: req.body.iv }) + const decryptedMessage = Encryption.decryptMessage({ message: req.body.data, key: decryptedKey, iv: req.body.iv }); + const decryptedToken = req.body.token ? Encryption.decryptMessage({ message: req.body.token, key: decryptedKey, iv: req.body.iv }) : null; req.body = JSON.parse(decryptedMessage); + + if (decryptedToken) { + req.headers.authorization = decryptedToken; + } + return next(); } catch (err) { logger.error(err); @@ -273,6 +279,37 @@ module.exports = async ( } }) + app.use(async (req, res, next) => { + logger.info('Route:', req.path) + if (unprotectedRoutes[req.method][req.path]) { + next() + } else { + try { + const response = await auth.validateToken( + req.headers.authorization.replace('Bearer ', '') + ) + if (response.valid) { + next() + } else { + res.status(401).json({ + field: 'authorization', + errorMessage: + "The authorization token you've supplied is invalid" + }) + } + } catch (err) { + logger.error( + !req.headers.authorization + ? 'Please add an Authorization header' + : err + ) + res + .status(401) + .json({ field: 'authorization', errorMessage: 'Please log in' }) + } + } + }) + app.use(async (req, res, next) => { try { if (unprotectedRoutes[req.method][req.path]) { diff --git a/src/server.js b/src/server.js index 5d17326e..d23af37a 100644 --- a/src/server.js +++ b/src/server.js @@ -166,37 +166,6 @@ const server = program => { app.use(compression()) - app.use(async (req, res, next) => { - logger.info('Route:', req.path) - if (unprotectedRoutes[req.method][req.path]) { - next() - } else { - try { - const response = await auth.validateToken( - req.headers.authorization.replace('Bearer ', '') - ) - if (response.valid) { - next() - } else { - res.status(401).json({ - field: 'authorization', - errorMessage: - "The authorization token you've supplied is invalid" - }) - } - } catch (err) { - logger.error( - !req.headers.authorization - ? 'Please add an Authorization header' - : err - ) - res - .status(401) - .json({ field: 'authorization', errorMessage: 'Please log in' }) - } - } - }) - app.use((req, res, next) => { if (process.env.ROUTE_LOGGING === 'true') { if (sensitiveRoutes[req.method][req.path]) {