@@ -2,15 +2,7 @@ const jwt = require('jsonwebtoken')
2
2
const User = require ( '../models/user' )
3
3
const UserAccess = require ( '../models/userAccess' )
4
4
const ForgotPassword = require ( '../models/forgotPassword' )
5
- const {
6
- getIP,
7
- getBrowserInfo,
8
- getCountry,
9
- buildSuccObject,
10
- buildErrObject,
11
- handleError,
12
- itemNotFound
13
- } = require ( '../middleware/utils' )
5
+ const utils = require ( '../middleware/utils' )
14
6
const uuid = require ( 'uuid' )
15
7
const { addHours } = require ( 'date-fns' )
16
8
const { matchedData } = require ( 'express-validator/filter' )
@@ -69,13 +61,13 @@ const saveUserAccessAndReturnToken = async (req, user) => {
69
61
return new Promise ( ( resolve , reject ) => {
70
62
const userAccess = new UserAccess ( {
71
63
email : user . email ,
72
- ip : getIP ( req ) ,
73
- browser : getBrowserInfo ( req ) ,
74
- country : getCountry ( req )
64
+ ip : utils . getIP ( req ) ,
65
+ browser : utils . getBrowserInfo ( req ) ,
66
+ country : utils . getCountry ( req )
75
67
} )
76
68
userAccess . save ( err => {
77
69
if ( err ) {
78
- reject ( buildErrObject ( 422 , err . message ) )
70
+ reject ( utils . buildErrObject ( 422 , err . message ) )
79
71
}
80
72
const userInfo = setUserInfo ( user )
81
73
// Returns data with access token
@@ -96,10 +88,10 @@ const blockUser = async user => {
96
88
user . blockExpires = addHours ( new Date ( ) , HOURS_TO_BLOCK )
97
89
user . save ( ( err , result ) => {
98
90
if ( err ) {
99
- reject ( buildErrObject ( 422 , err . message ) )
91
+ reject ( utils . buildErrObject ( 422 , err . message ) )
100
92
}
101
93
if ( result ) {
102
- resolve ( buildErrObject ( 409 , 'BLOCKED_USER' ) )
94
+ resolve ( utils . buildErrObject ( 409 , 'BLOCKED_USER' ) )
103
95
}
104
96
} )
105
97
} )
@@ -113,7 +105,7 @@ const saveLoginAttemptsToDB = async user => {
113
105
return new Promise ( ( resolve , reject ) => {
114
106
user . save ( ( err , result ) => {
115
107
if ( err ) {
116
- reject ( buildErrObject ( 422 , err . message ) )
108
+ reject ( utils . buildErrObject ( 422 , err . message ) )
117
109
}
118
110
if ( result ) {
119
111
resolve ( true )
@@ -140,7 +132,7 @@ const checkLoginAttemptsAndBlockExpires = async user => {
140
132
user . loginAttempts = 0
141
133
user . save ( ( err , result ) => {
142
134
if ( err ) {
143
- reject ( buildErrObject ( 422 , err . message ) )
135
+ reject ( utils . buildErrObject ( 422 , err . message ) )
144
136
}
145
137
if ( result ) {
146
138
resolve ( true )
@@ -160,7 +152,7 @@ const checkLoginAttemptsAndBlockExpires = async user => {
160
152
const userIsBlocked = async user => {
161
153
return new Promise ( ( resolve , reject ) => {
162
154
if ( user . blockExpires > new Date ( ) ) {
163
- reject ( buildErrObject ( 409 , 'BLOCKED_USER' ) )
155
+ reject ( utils . buildErrObject ( 409 , 'BLOCKED_USER' ) )
164
156
}
165
157
resolve ( true )
166
158
} )
@@ -178,7 +170,7 @@ const findUser = async email => {
178
170
} ,
179
171
'password loginAttempts blockExpires name email role verified verification' ,
180
172
( err , item ) => {
181
- itemNotFound ( err , item , reject , 'USER_DOES_NOT_EXIST' )
173
+ utils . itemNotFound ( err , item , reject , 'USER_DOES_NOT_EXIST' )
182
174
resolve ( item )
183
175
}
184
176
)
@@ -194,11 +186,11 @@ const passwordsDoNotMatch = async user => {
194
186
await saveLoginAttemptsToDB ( user )
195
187
return new Promise ( ( resolve , reject ) => {
196
188
if ( user . loginAttempts <= LOGIN_ATTEMPTS ) {
197
- resolve ( buildErrObject ( 409 , 'WRONG_PASSWORD' ) )
189
+ resolve ( utils . buildErrObject ( 409 , 'WRONG_PASSWORD' ) )
198
190
} else {
199
191
resolve ( blockUser ( user ) )
200
192
}
201
- reject ( buildErrObject ( 422 , 'ERROR' ) )
193
+ reject ( utils . buildErrObject ( 422 , 'ERROR' ) )
202
194
} )
203
195
}
204
196
@@ -216,7 +208,7 @@ const registerUser = async req => {
216
208
} )
217
209
user . save ( ( err , item ) => {
218
210
if ( err ) {
219
- reject ( buildErrObject ( 422 , err . message ) )
211
+ reject ( utils . buildErrObject ( 422 , err . message ) )
220
212
}
221
213
resolve ( item )
222
214
} )
@@ -251,7 +243,7 @@ const verificationExists = async id => {
251
243
verified : false
252
244
} ,
253
245
( err , user ) => {
254
- itemNotFound ( err , user , reject , 'NOT_FOUND_OR_ALREADY_VERIFIED' )
246
+ utils . itemNotFound ( err , user , reject , 'NOT_FOUND_OR_ALREADY_VERIFIED' )
255
247
resolve ( user )
256
248
}
257
249
)
@@ -267,7 +259,7 @@ const verifyUser = async user => {
267
259
user . verified = true
268
260
user . save ( ( err , item ) => {
269
261
if ( err ) {
270
- reject ( buildErrObject ( 422 , err . message ) )
262
+ reject ( utils . buildErrObject ( 422 , err . message ) )
271
263
}
272
264
resolve ( {
273
265
email : item . email ,
@@ -285,12 +277,12 @@ const verifyUser = async user => {
285
277
const markResetPasswordAsUsed = async ( req , forgot ) => {
286
278
return new Promise ( ( resolve , reject ) => {
287
279
forgot . used = true
288
- forgot . ipChanged = getIP ( req )
289
- forgot . browserChanged = getBrowserInfo ( req )
290
- forgot . countryChanged = getCountry ( req )
280
+ forgot . ipChanged = utils . getIP ( req )
281
+ forgot . browserChanged = utils . getBrowserInfo ( req )
282
+ forgot . countryChanged = utils . getCountry ( req )
291
283
forgot . save ( ( err , item ) => {
292
- itemNotFound ( err , item , reject , 'NOT_FOUND' )
293
- resolve ( buildSuccObject ( 'PASSWORD_CHANGED' ) )
284
+ utils . itemNotFound ( err , item , reject , 'NOT_FOUND' )
285
+ resolve ( utils . buildSuccObject ( 'PASSWORD_CHANGED' ) )
294
286
} )
295
287
} )
296
288
}
@@ -304,7 +296,7 @@ const updatePassword = async (password, user) => {
304
296
return new Promise ( ( resolve , reject ) => {
305
297
user . password = password
306
298
user . save ( ( err , item ) => {
307
- itemNotFound ( err , item , reject , 'NOT_FOUND' )
299
+ utils . itemNotFound ( err , item , reject , 'NOT_FOUND' )
308
300
resolve ( item )
309
301
} )
310
302
} )
@@ -321,7 +313,7 @@ const findUserToResetPassword = async email => {
321
313
email
322
314
} ,
323
315
( err , user ) => {
324
- itemNotFound ( err , user , reject , 'NOT_FOUND' )
316
+ utils . itemNotFound ( err , user , reject , 'NOT_FOUND' )
325
317
resolve ( user )
326
318
}
327
319
)
@@ -340,7 +332,7 @@ const findForgotPassword = async id => {
340
332
used : false
341
333
} ,
342
334
( err , item ) => {
343
- itemNotFound ( err , item , reject , 'NOT_FOUND_OR_ALREADY_USED' )
335
+ utils . itemNotFound ( err , item , reject , 'NOT_FOUND_OR_ALREADY_USED' )
344
336
resolve ( item )
345
337
}
346
338
)
@@ -356,13 +348,13 @@ const saveForgotPassword = async req => {
356
348
const forgot = new ForgotPassword ( {
357
349
email : req . body . email ,
358
350
verification : uuid . v4 ( ) ,
359
- ipRequest : getIP ( req ) ,
360
- browserRequest : getBrowserInfo ( req ) ,
361
- countryRequest : getCountry ( req )
351
+ ipRequest : utils . getIP ( req ) ,
352
+ browserRequest : utils . getBrowserInfo ( req ) ,
353
+ countryRequest : utils . getCountry ( req )
362
354
} )
363
355
forgot . save ( ( err , item ) => {
364
356
if ( err ) {
365
- reject ( buildErrObject ( 422 , err . message ) )
357
+ reject ( utils . buildErrObject ( 422 , err . message ) )
366
358
}
367
359
resolve ( item )
368
360
} )
@@ -395,11 +387,11 @@ const forgotPasswordResponse = item => {
395
387
const checkPermissions = async ( data , next ) => {
396
388
return new Promise ( ( resolve , reject ) => {
397
389
User . findById ( data . id , ( err , result ) => {
398
- itemNotFound ( err , result , reject , 'NOT_FOUND' )
390
+ utils . itemNotFound ( err , result , reject , 'NOT_FOUND' )
399
391
if ( data . roles . indexOf ( result . role ) > - 1 ) {
400
392
return resolve ( next ( ) )
401
393
}
402
- return reject ( buildErrObject ( 401 , 'UNAUTHORIZED' ) )
394
+ return reject ( utils . buildErrObject ( 401 , 'UNAUTHORIZED' ) )
403
395
} )
404
396
} )
405
397
}
@@ -421,15 +413,15 @@ exports.login = async (req, res) => {
421
413
await checkLoginAttemptsAndBlockExpires ( user )
422
414
const isPasswordMatch = await auth . checkPassword ( data . password , user )
423
415
if ( ! isPasswordMatch ) {
424
- handleError ( res , await passwordsDoNotMatch ( user ) )
416
+ utils . handleError ( res , await passwordsDoNotMatch ( user ) )
425
417
} else {
426
418
// all ok, register access and return token
427
419
user . loginAttempts = 0
428
420
await saveLoginAttemptsToDB ( user )
429
421
res . status ( 200 ) . json ( await saveUserAccessAndReturnToken ( req , user ) )
430
422
}
431
423
} catch ( error ) {
432
- handleError ( res , error )
424
+ utils . handleError ( res , error )
433
425
}
434
426
}
435
427
@@ -452,7 +444,7 @@ exports.register = async (req, res) => {
452
444
res . status ( 201 ) . json ( response )
453
445
}
454
446
} catch ( error ) {
455
- handleError ( res , error )
447
+ utils . handleError ( res , error )
456
448
}
457
449
}
458
450
@@ -467,7 +459,7 @@ exports.verify = async (req, res) => {
467
459
const user = await verificationExists ( req . id )
468
460
res . status ( 200 ) . json ( await verifyUser ( user ) )
469
461
} catch ( error ) {
470
- handleError ( res , error )
462
+ utils . handleError ( res , error )
471
463
}
472
464
}
473
465
@@ -486,7 +478,7 @@ exports.forgotPassword = async (req, res) => {
486
478
emailer . sendResetPasswordEmailMessage ( locale , item )
487
479
res . status ( 200 ) . json ( forgotPasswordResponse ( item ) )
488
480
} catch ( error ) {
489
- handleError ( res , error )
481
+ utils . handleError ( res , error )
490
482
}
491
483
}
492
484
@@ -504,7 +496,7 @@ exports.resetPassword = async (req, res) => {
504
496
const result = await markResetPasswordAsUsed ( req , forgotPassword )
505
497
res . status ( 200 ) . json ( result )
506
498
} catch ( error ) {
507
- handleError ( res , error )
499
+ utils . handleError ( res , error )
508
500
}
509
501
}
510
502
@@ -520,6 +512,6 @@ exports.roleAuthorization = roles => async (req, res, next) => {
520
512
}
521
513
await checkPermissions ( data , next )
522
514
} catch ( error ) {
523
- handleError ( res , error )
515
+ utils . handleError ( res , error )
524
516
}
525
517
}
0 commit comments