11import crypto from 'crypto' ;
22import async from 'async' ;
3+ import escapeStringRegexp from 'escape-string-regexp' ;
34
45import User from '../models/user' ;
56import mail from '../utils/mail' ;
@@ -41,12 +42,11 @@ export function findUserByUsername(username, cb) {
4142export function createUser ( req , res , next ) {
4243 const { username, email } = req . body ;
4344 const { password } = req . body ;
44- const usernameLowerCase = username . toLowerCase ( ) ;
4545 const emailLowerCase = email . toLowerCase ( ) ;
4646 const EMAIL_VERIFY_TOKEN_EXPIRY_TIME = Date . now ( ) + ( 3600000 * 24 ) ; // 24 hours
4747 random ( ( tokenError , token ) => {
4848 const user = new User ( {
49- username : usernameLowerCase ,
49+ username : username ,
5050 email : emailLowerCase ,
5151 password,
5252 verified : User . EmailConfirmation . Sent ,
@@ -57,8 +57,8 @@ export function createUser(req, res, next) {
5757 User . findOne (
5858 {
5959 $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' ) }
6262 ]
6363 } ,
6464 ( err , existingUser ) => {
@@ -106,7 +106,7 @@ export function duplicateUserCheck(req, res) {
106106 const checkType = req . query . check_type ;
107107 const value = req . query [ checkType ] ;
108108 const query = { } ;
109- query [ checkType ] = value ;
109+ query [ checkType ] = new RegExp ( `^ ${ escapeStringRegexp ( value ) } $` , 'i' ) ;
110110 User . findOne ( query , ( err , user ) => {
111111 if ( user ) {
112112 return res . json ( {
@@ -151,7 +151,7 @@ export function resetPasswordInitiate(req, res) {
151151 async . waterfall ( [
152152 random ,
153153 ( token , done ) => {
154- User . findOne ( { email : req . body . email } , ( err , user ) => {
154+ User . findOne ( { email : req . body . email . toLowerCase ( ) } , ( err , user ) => {
155155 if ( ! user ) {
156156 res . json ( { success : true , message : 'If the email is registered with the editor, an email has been sent.' } ) ;
157157 return ;
@@ -281,7 +281,7 @@ export function updatePassword(req, res) {
281281}
282282
283283export function userExists ( username , callback ) {
284- User . findOne ( { username } , ( err , user ) => (
284+ User . findOne ( { username : new RegExp ( `^ ${ escapeStringRegexp ( username ) } $` , 'i' ) } , ( err , user ) => (
285285 user ? callback ( true ) : callback ( false )
286286 ) ) ;
287287}
0 commit comments