From d0b59768dca40682a0c564b8a3c9756c3374929f Mon Sep 17 00:00:00 2001 From: Vijay Budhram Date: Thu, 20 Apr 2017 09:58:10 -0400 Subject: [PATCH] fix(config): Add config for unverified account to exist before secondary email can be create with the same email (#1845) r=vladikoff --- config/dev.json | 3 +++ config/index.js | 6 ++++++ lib/routes/account.js | 5 +++-- test/local/routes/recovery_email.js | 3 ++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/config/dev.json b/config/dev.json index e6831d877..440e9289b 100644 --- a/config/dev.json +++ b/config/dev.json @@ -27,5 +27,8 @@ "ipProfiling": { "allowedRecency": 0 } + }, + "secondaryEmail": { + "enabled": true } } diff --git a/config/index.js b/config/index.js index 5173b65dd..953b895d5 100644 --- a/config/index.js +++ b/config/index.js @@ -755,6 +755,12 @@ var conf = convict({ default: false, format: Boolean, env: 'SECONDARY_EMAIL_ENABLED' + }, + minUnverifiedAccountTime: { + doc: 'The minimum amount of time an account can be unverified before another account can use it for secondary email', + default: '1 day', + format: 'duration', + env: 'SECONDARY_EMAIL_MIN_UNVERIFIED_ACCOUNT_TIME' } } }) diff --git a/lib/routes/account.js b/lib/routes/account.js index 5f4309ab9..5e0e9fec4 100644 --- a/lib/routes/account.js +++ b/lib/routes/account.js @@ -2092,8 +2092,9 @@ module.exports = ( // a day, if so, delete account so another user can add it as a // secondary email const msSinceCreated = Date.now() - emailRecord.createdAt - if (msSinceCreated >= MS_ONE_DAY) { - return db.deleteAccount(emailRecord.uid) + const minUnverifiedAccountTime = config.secondaryEmail.minUnverifiedAccountTime + if (msSinceCreated >= minUnverifiedAccountTime) { + return db.deleteAccount(emailRecord) } else { throw error.unverifiedPrimaryEmailNewlyCreated() } diff --git a/test/local/routes/recovery_email.js b/test/local/routes/recovery_email.js index b16e2e3d7..a74725d85 100644 --- a/test/local/routes/recovery_email.js +++ b/test/local/routes/recovery_email.js @@ -615,7 +615,8 @@ describe('/recovery_email', () => { }, config: { secondaryEmail: { - enabled: true + enabled: true, + minUnverifiedAccountTime: MS_IN_DAY } }, customs: mockCustoms,