Skip to content

Commit 4922f42

Browse files
Dhaval TrivediDavid Cheung
authored andcommitted
adding check of string for case insensitive emails
1 parent 6d5d7f0 commit 4922f42

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
@@ -657,7 +657,8 @@ module.exports = function(User) {
657657

658658
// Access token to normalize email credentials
659659
UserModel.observe('access', function normalizeEmailCase(ctx, next) {
660-
if (!ctx.Model.settings.caseSensitiveEmail && ctx.query.where && ctx.query.where.email) {
660+
if (!ctx.Model.settings.caseSensitiveEmail && ctx.query.where &&
661+
ctx.query.where.email && typeof(ctx.query.where.email) === 'string') {
661662
ctx.query.where.email = ctx.query.where.email.toLowerCase();
662663
}
663664
next();

test/user.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,36 @@ describe('User', function() {
454454
done();
455455
});
456456
});
457+
458+
it('Should be able to use query filters (email case-sensitivity off)', function(done) {
459+
User.settings.caseSensitiveEmail = false;
460+
var insensitiveUser = { email: '[email protected]', password: 'abc' };
461+
User.create(insensitiveUser, function(err, user) {
462+
User.find({ where: { email:
463+
{ inq: [insensitiveUser.email] },
464+
}}, function(err, result) {
465+
if (err) done(err);
466+
assert(result[0], 'The query did not find the user');
467+
assert.equal(result[0].email, insensitiveUser.email);
468+
done();
469+
});
470+
});
471+
});
472+
473+
it('Should be able to use query filters (email case-sensitivity on)', function(done) {
474+
User.settings.caseSensitiveEmail = true;
475+
var sensitiveUser = { email: '[email protected]', password: 'abc' };
476+
User.create(sensitiveUser, function(err, user) {
477+
User.find({ where: { email:
478+
{ inq: [sensitiveUser.email] },
479+
}}, function(err, result) {
480+
if (err) done(err);
481+
assert(result[0], 'The query did not find the user');
482+
assert.equal(result[0].email, sensitiveUser.email);
483+
done();
484+
});
485+
});
486+
});
457487
});
458488

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

0 commit comments

Comments
 (0)