fix(events): require events to be configured in production
While abrupt, forgetting to delete user information is a big deal, so this will prevent the server from running as long as the event queue is not setup. BREAKING CHANGE: Server will fail to start up if `config.events` is not set with values when in production.
This commit is contained in:
Родитель
2b0582fbd2
Коммит
1bef9e0aa2
|
@ -208,5 +208,4 @@ var options = {
|
|||
|
||||
conf.validate(options);
|
||||
|
||||
|
||||
module.exports = conf;
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
const config = require('./config');
|
||||
|
||||
exports.isProdLike = function isProdLike() {
|
||||
var env = config.get('env');
|
||||
return env === 'prod' || env === 'stage';
|
||||
};
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
const config = require('./config').root();
|
||||
const db = require('./db');
|
||||
const env = require('./env');
|
||||
const logger = require('./logging')('events');
|
||||
const Sink = require('fxa-notifier-aws').Sink;
|
||||
const HEX_STRING = require('./validators').HEX_STRING;
|
||||
|
@ -12,12 +13,19 @@ var fxaEvents;
|
|||
|
||||
if (!config.events.region || !config.events.queueUrl) {
|
||||
fxaEvents = {
|
||||
start: function () { logger.warn('accountEvent.unconfigured'); }
|
||||
start: function start() {
|
||||
if (env.isProdLike()) {
|
||||
throw new Error('config.events must be included in prod');
|
||||
} else {
|
||||
logger.warn('accountEvent.unconfigured');
|
||||
}
|
||||
}
|
||||
};
|
||||
} else {
|
||||
fxaEvents = new Sink(config.events.region, config.events.queueUrl);
|
||||
|
||||
fxaEvents.on('data', function (message) {
|
||||
logger.verbose('data', message);
|
||||
if (message.event === 'delete') {
|
||||
var userId = message.uid.split('@')[0];
|
||||
if (!HEX_STRING.test(userId)) {
|
||||
|
@ -26,6 +34,7 @@ if (!config.events.region || !config.events.queueUrl) {
|
|||
}
|
||||
db.removeUser(userId)
|
||||
.done(function () {
|
||||
logger.info('delete', { uid: userId });
|
||||
message.del();
|
||||
},
|
||||
function (err) {
|
||||
|
|
|
@ -6,6 +6,7 @@ const Hapi = require('hapi');
|
|||
|
||||
const AppError = require('../error');
|
||||
const config = require('../config').root();
|
||||
const env = require('../env');
|
||||
const logger = require('../logging')('server');
|
||||
const hapiLogger = require('../logging')('server.hapi');
|
||||
const summary = require('../logging/summary');
|
||||
|
@ -18,7 +19,7 @@ exports.create = function createServer() {
|
|||
logger.warn('localRedirect',
|
||||
'*** localRedirects is set to TRUE. Should only be used for developers.');
|
||||
}
|
||||
var isProd = config.env === 'prod';
|
||||
var isProd = env.isProdLike();
|
||||
var server = Hapi.createServer(
|
||||
config.server.host,
|
||||
config.server.port,
|
||||
|
|
|
@ -7,12 +7,13 @@ const Hapi = require('hapi');
|
|||
const AppError = require('../error');
|
||||
const auth = require('../auth');
|
||||
const config = require('../config').root();
|
||||
const env = require('../env');
|
||||
const logger = require('../logging')('server.clients');
|
||||
const hapiLogger = require('../logging')('server.hapi');
|
||||
const summary = require('../logging/summary');
|
||||
|
||||
exports.create = function createServer() {
|
||||
var isProd = config.env === 'prod';
|
||||
var isProd = env.isProdLike();
|
||||
var server = Hapi.createServer(
|
||||
config.serverInternal.host,
|
||||
config.serverInternal.port,
|
||||
|
|
Загрузка…
Ссылка в новой задаче