Skip to content

Commit d61e173

Browse files
authored
Merge pull request #2914 from strongloop/backport-email-case-sensitive
[backport #2912] adding check of string for case insensitive emails
2 parents 1915d09 + 6e88013 commit d61e173

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

common/models/user.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,8 @@ module.exports = function(User) {
649649

650650
// Access token to normalize email credentials
651651
UserModel.observe('access', function normalizeEmailCase(ctx, next) {
652-
if (!ctx.Model.settings.caseSensitiveEmail && ctx.query.where && ctx.query.where.email) {
652+
if (!ctx.Model.settings.caseSensitiveEmail && ctx.query.where &&
653+
ctx.query.where.email && typeof(ctx.query.where.email) === 'string') {
653654
ctx.query.where.email = ctx.query.where.email.toLowerCase();
654655
}
655656
next();

test/user.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,36 @@ describe('User', function() {
468468
done();
469469
});
470470
});
471+
472+
it('Should be able to use query filters (email case-sensitivity off)', function(done) {
473+
User.settings.caseSensitiveEmail = false;
474+
var insensitiveUser = { email: '[email protected]', password: 'abc' };
475+
User.create(insensitiveUser, function(err, user) {
476+
User.find({ where: { email:
477+
{ inq: [insensitiveUser.email] },
478+
}}, function(err, result) {
479+
if (err) done(err);
480+
assert(result[0], 'The query did not find the user');
481+
assert.equal(result[0].email, insensitiveUser.email);
482+
done();
483+
});
484+
});
485+
});
486+
487+
it('Should be able to use query filters (email case-sensitivity on)', function(done) {
488+
User.settings.caseSensitiveEmail = true;
489+
var sensitiveUser = { email: '[email protected]', password: 'abc' };
490+
User.create(sensitiveUser, function(err, user) {
491+
User.find({ where: { email:
492+
{ inq: [sensitiveUser.email] },
493+
}}, function(err, result) {
494+
if (err) done(err);
495+
assert(result[0], 'The query did not find the user');
496+
assert.equal(result[0].email, sensitiveUser.email);
497+
done();
498+
});
499+
});
500+
});
471501
});
472502

473503
describe('User.login', function() {

0 commit comments

Comments
 (0)