1
1
import crypto from 'crypto' ;
2
2
import async from 'async' ;
3
+ import escapeStringRegexp from 'escape-string-regexp' ;
3
4
4
5
import User from '../models/user' ;
5
6
import mail from '../utils/mail' ;
@@ -41,12 +42,11 @@ export function findUserByUsername(username, cb) {
41
42
export function createUser ( req , res , next ) {
42
43
const { username, email } = req . body ;
43
44
const { password } = req . body ;
44
- const usernameLowerCase = username . toLowerCase ( ) ;
45
45
const emailLowerCase = email . toLowerCase ( ) ;
46
46
const EMAIL_VERIFY_TOKEN_EXPIRY_TIME = Date . now ( ) + ( 3600000 * 24 ) ; // 24 hours
47
47
random ( ( tokenError , token ) => {
48
48
const user = new User ( {
49
- username : usernameLowerCase ,
49
+ username : username ,
50
50
email : emailLowerCase ,
51
51
password,
52
52
verified : User . EmailConfirmation . Sent ,
@@ -57,8 +57,8 @@ export function createUser(req, res, next) {
57
57
User . findOne (
58
58
{
59
59
$or : [
60
- { email : { $in : [ email , emailLowerCase ] } } ,
61
- { username : { $in : [ username , usernameLowerCase ] } }
60
+ { email : new RegExp ( `^ ${ escapeStringRegexp ( email ) } $` , 'i' ) } ,
61
+ { username : new RegExp ( `^ ${ escapeStringRegexp ( username ) } $` , 'i' ) }
62
62
]
63
63
} ,
64
64
( err , existingUser ) => {
@@ -106,7 +106,7 @@ export function duplicateUserCheck(req, res) {
106
106
const checkType = req . query . check_type ;
107
107
const value = req . query [ checkType ] ;
108
108
const query = { } ;
109
- query [ checkType ] = value ;
109
+ query [ checkType ] = new RegExp ( `^ ${ escapeStringRegexp ( value ) } $` , 'i' ) ;
110
110
User . findOne ( query , ( err , user ) => {
111
111
if ( user ) {
112
112
return res . json ( {
@@ -151,7 +151,7 @@ export function resetPasswordInitiate(req, res) {
151
151
async . waterfall ( [
152
152
random ,
153
153
( token , done ) => {
154
- User . findOne ( { email : req . body . email } , ( err , user ) => {
154
+ User . findOne ( { email : req . body . email . toLowerCase ( ) } , ( err , user ) => {
155
155
if ( ! user ) {
156
156
res . json ( { success : true , message : 'If the email is registered with the editor, an email has been sent.' } ) ;
157
157
return ;
@@ -281,7 +281,7 @@ export function updatePassword(req, res) {
281
281
}
282
282
283
283
export function userExists ( username , callback ) {
284
- User . findOne ( { username } , ( err , user ) => (
284
+ User . findOne ( { username : new RegExp ( `^ ${ escapeStringRegexp ( username ) } $` , 'i' ) } , ( err , user ) => (
285
285
user ? callback ( true ) : callback ( false )
286
286
) ) ;
287
287
}
0 commit comments