Skip to content

Commit 489ed91

Browse files
authored
Merge pull request #2298 from strongloop/user-realm-composite-key
Composite Key validation for Realm enabled users
2 parents c3ba632 + d544ae1 commit 489ed91

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

common/models/user.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -789,8 +789,18 @@ module.exports = function(User) {
789789
message: g.f('Must provide a valid email'),
790790
});
791791

792-
// FIXME: We need to add support for uniqueness of composite keys in juggler
793-
if (!(UserModel.settings.realmRequired || UserModel.settings.realmDelimiter)) {
792+
// Realm users validation
793+
if (UserModel.settings.realmRequired && UserModel.settings.realmDelimiter) {
794+
UserModel.validatesUniquenessOf('email', {
795+
message: 'Email already exists',
796+
scopedTo: ['realm'],
797+
});
798+
UserModel.validatesUniquenessOf('username', {
799+
message: 'User already exists',
800+
scopedTo: ['realm'],
801+
});
802+
} else {
803+
// Regular(Non-realm) users validation
794804
UserModel.validatesUniquenessOf('email', { message: 'Email already exists' });
795805
UserModel.validatesUniquenessOf('username', { message: 'User already exists' });
796806
}

test/user.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,15 @@ describe('User', function() {
998998
});
999999
});
10001000

1001+
it('honors unique email for realm', function(done) {
1002+
User.create(realm1User, function(err, u) {
1003+
assert(err);
1004+
assert(err.message.match(/User already exists/) &&
1005+
err.message.match(/Email already exists/));
1006+
done();
1007+
});
1008+
});
1009+
10011010
it('rejects a user by without realm', function(done) {
10021011
User.login(credentialWithoutRealm, function(err, accessToken) {
10031012
assert(err);

0 commit comments

Comments
 (0)