From d544ae1bf8c77d234f611dce6a3c68757a34afdd Mon Sep 17 00:00:00 2001 From: David Cheung Date: Thu, 18 Aug 2016 17:52:04 -0400 Subject: [PATCH] Support uniqueness for realm users --- common/models/user.js | 14 ++++++++++++-- test/user.test.js | 9 +++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/common/models/user.js b/common/models/user.js index 0847f7f9..cc3b2797 100644 --- a/common/models/user.js +++ b/common/models/user.js @@ -789,8 +789,18 @@ module.exports = function(User) { message: g.f('Must provide a valid email'), }); - // FIXME: We need to add support for uniqueness of composite keys in juggler - if (!(UserModel.settings.realmRequired || UserModel.settings.realmDelimiter)) { + // Realm users validation + if (UserModel.settings.realmRequired && UserModel.settings.realmDelimiter) { + UserModel.validatesUniquenessOf('email', { + message: 'Email already exists', + scopedTo: ['realm'], + }); + UserModel.validatesUniquenessOf('username', { + message: 'User already exists', + scopedTo: ['realm'], + }); + } else { + // Regular(Non-realm) users validation UserModel.validatesUniquenessOf('email', { message: 'Email already exists' }); UserModel.validatesUniquenessOf('username', { message: 'User already exists' }); } diff --git a/test/user.test.js b/test/user.test.js index 0e68de5d..85ed7c45 100644 --- a/test/user.test.js +++ b/test/user.test.js @@ -998,6 +998,15 @@ describe('User', function() { }); }); + it('honors unique email for realm', function(done) { + User.create(realm1User, function(err, u) { + assert(err); + assert(err.message.match(/User already exists/) && + err.message.match(/Email already exists/)); + done(); + }); + }); + it('rejects a user by without realm', function(done) { User.login(credentialWithoutRealm, function(err, accessToken) { assert(err);