secure the provision and activation routes with a token

fixes #751
This commit is contained in:
Girish Ramakrishnan
2020-12-21 22:36:10 -08:00
parent e905c1edbe
commit 7bdeaca75b
6 changed files with 43 additions and 11 deletions

View File

@@ -1,11 +1,12 @@
'use strict';
exports = module.exports = {
providerTokenAuth: providerTokenAuth,
setup: setup,
activate: activate,
restore: restore,
getStatus: getStatus
providerTokenAuth,
setup,
activate,
restore,
getStatus,
setupTokenAuth
};
var assert = require('assert'),
@@ -15,10 +16,24 @@ var assert = require('assert'),
debug = require('debug')('box:routes/setup'),
HttpError = require('connect-lastmile').HttpError,
HttpSuccess = require('connect-lastmile').HttpSuccess,
paths = require('../paths.js'),
provision = require('../provision.js'),
request = require('request'),
safe = require('safetydance'),
settings = require('../settings.js');
function setupTokenAuth(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
const setupToken = safe.fs.readFileSync(paths.SETUP_TOKEN_FILE, 'utf8');
if (!setupToken) return next();
if (!req.body.setupToken) return next(new HttpError(400, 'setup token required'));
if (setupToken.trim() !== req.body.setupToken) return next(new HttpError(422, 'setup token does not match'));
return next();
}
function providerTokenAuth(req, res, next) {
assert.strictEqual(typeof req.body, 'object');