Skip to content

Commit ca97569

Browse files
committed
- Big refactor
- FIX: send emails with mailgun
1 parent dc20152 commit ca97569

13 files changed

+140
-153
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## v.5.0.0 (Mar 25, 2019)
2+
3+
- Big refactor
4+
- FIX: send emails with mailgun
5+
16
## v.4.0.14 (Mar 25, 2019)
27

38
- Removed unused code

app/controllers/auth.js

+37-45
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@ const jwt = require('jsonwebtoken')
22
const User = require('../models/user')
33
const UserAccess = require('../models/userAccess')
44
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')
146
const uuid = require('uuid')
157
const { addHours } = require('date-fns')
168
const { matchedData } = require('express-validator/filter')
@@ -69,13 +61,13 @@ const saveUserAccessAndReturnToken = async (req, user) => {
6961
return new Promise((resolve, reject) => {
7062
const userAccess = new UserAccess({
7163
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)
7567
})
7668
userAccess.save(err => {
7769
if (err) {
78-
reject(buildErrObject(422, err.message))
70+
reject(utils.buildErrObject(422, err.message))
7971
}
8072
const userInfo = setUserInfo(user)
8173
// Returns data with access token
@@ -96,10 +88,10 @@ const blockUser = async user => {
9688
user.blockExpires = addHours(new Date(), HOURS_TO_BLOCK)
9789
user.save((err, result) => {
9890
if (err) {
99-
reject(buildErrObject(422, err.message))
91+
reject(utils.buildErrObject(422, err.message))
10092
}
10193
if (result) {
102-
resolve(buildErrObject(409, 'BLOCKED_USER'))
94+
resolve(utils.buildErrObject(409, 'BLOCKED_USER'))
10395
}
10496
})
10597
})
@@ -113,7 +105,7 @@ const saveLoginAttemptsToDB = async user => {
113105
return new Promise((resolve, reject) => {
114106
user.save((err, result) => {
115107
if (err) {
116-
reject(buildErrObject(422, err.message))
108+
reject(utils.buildErrObject(422, err.message))
117109
}
118110
if (result) {
119111
resolve(true)
@@ -140,7 +132,7 @@ const checkLoginAttemptsAndBlockExpires = async user => {
140132
user.loginAttempts = 0
141133
user.save((err, result) => {
142134
if (err) {
143-
reject(buildErrObject(422, err.message))
135+
reject(utils.buildErrObject(422, err.message))
144136
}
145137
if (result) {
146138
resolve(true)
@@ -160,7 +152,7 @@ const checkLoginAttemptsAndBlockExpires = async user => {
160152
const userIsBlocked = async user => {
161153
return new Promise((resolve, reject) => {
162154
if (user.blockExpires > new Date()) {
163-
reject(buildErrObject(409, 'BLOCKED_USER'))
155+
reject(utils.buildErrObject(409, 'BLOCKED_USER'))
164156
}
165157
resolve(true)
166158
})
@@ -178,7 +170,7 @@ const findUser = async email => {
178170
},
179171
'password loginAttempts blockExpires name email role verified verification',
180172
(err, item) => {
181-
itemNotFound(err, item, reject, 'USER_DOES_NOT_EXIST')
173+
utils.itemNotFound(err, item, reject, 'USER_DOES_NOT_EXIST')
182174
resolve(item)
183175
}
184176
)
@@ -194,11 +186,11 @@ const passwordsDoNotMatch = async user => {
194186
await saveLoginAttemptsToDB(user)
195187
return new Promise((resolve, reject) => {
196188
if (user.loginAttempts <= LOGIN_ATTEMPTS) {
197-
resolve(buildErrObject(409, 'WRONG_PASSWORD'))
189+
resolve(utils.buildErrObject(409, 'WRONG_PASSWORD'))
198190
} else {
199191
resolve(blockUser(user))
200192
}
201-
reject(buildErrObject(422, 'ERROR'))
193+
reject(utils.buildErrObject(422, 'ERROR'))
202194
})
203195
}
204196

@@ -216,7 +208,7 @@ const registerUser = async req => {
216208
})
217209
user.save((err, item) => {
218210
if (err) {
219-
reject(buildErrObject(422, err.message))
211+
reject(utils.buildErrObject(422, err.message))
220212
}
221213
resolve(item)
222214
})
@@ -251,7 +243,7 @@ const verificationExists = async id => {
251243
verified: false
252244
},
253245
(err, user) => {
254-
itemNotFound(err, user, reject, 'NOT_FOUND_OR_ALREADY_VERIFIED')
246+
utils.itemNotFound(err, user, reject, 'NOT_FOUND_OR_ALREADY_VERIFIED')
255247
resolve(user)
256248
}
257249
)
@@ -267,7 +259,7 @@ const verifyUser = async user => {
267259
user.verified = true
268260
user.save((err, item) => {
269261
if (err) {
270-
reject(buildErrObject(422, err.message))
262+
reject(utils.buildErrObject(422, err.message))
271263
}
272264
resolve({
273265
email: item.email,
@@ -285,12 +277,12 @@ const verifyUser = async user => {
285277
const markResetPasswordAsUsed = async (req, forgot) => {
286278
return new Promise((resolve, reject) => {
287279
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)
291283
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'))
294286
})
295287
})
296288
}
@@ -304,7 +296,7 @@ const updatePassword = async (password, user) => {
304296
return new Promise((resolve, reject) => {
305297
user.password = password
306298
user.save((err, item) => {
307-
itemNotFound(err, item, reject, 'NOT_FOUND')
299+
utils.itemNotFound(err, item, reject, 'NOT_FOUND')
308300
resolve(item)
309301
})
310302
})
@@ -321,7 +313,7 @@ const findUserToResetPassword = async email => {
321313
email
322314
},
323315
(err, user) => {
324-
itemNotFound(err, user, reject, 'NOT_FOUND')
316+
utils.itemNotFound(err, user, reject, 'NOT_FOUND')
325317
resolve(user)
326318
}
327319
)
@@ -340,7 +332,7 @@ const findForgotPassword = async id => {
340332
used: false
341333
},
342334
(err, item) => {
343-
itemNotFound(err, item, reject, 'NOT_FOUND_OR_ALREADY_USED')
335+
utils.itemNotFound(err, item, reject, 'NOT_FOUND_OR_ALREADY_USED')
344336
resolve(item)
345337
}
346338
)
@@ -356,13 +348,13 @@ const saveForgotPassword = async req => {
356348
const forgot = new ForgotPassword({
357349
email: req.body.email,
358350
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)
362354
})
363355
forgot.save((err, item) => {
364356
if (err) {
365-
reject(buildErrObject(422, err.message))
357+
reject(utils.buildErrObject(422, err.message))
366358
}
367359
resolve(item)
368360
})
@@ -395,11 +387,11 @@ const forgotPasswordResponse = item => {
395387
const checkPermissions = async (data, next) => {
396388
return new Promise((resolve, reject) => {
397389
User.findById(data.id, (err, result) => {
398-
itemNotFound(err, result, reject, 'NOT_FOUND')
390+
utils.itemNotFound(err, result, reject, 'NOT_FOUND')
399391
if (data.roles.indexOf(result.role) > -1) {
400392
return resolve(next())
401393
}
402-
return reject(buildErrObject(401, 'UNAUTHORIZED'))
394+
return reject(utils.buildErrObject(401, 'UNAUTHORIZED'))
403395
})
404396
})
405397
}
@@ -421,15 +413,15 @@ exports.login = async (req, res) => {
421413
await checkLoginAttemptsAndBlockExpires(user)
422414
const isPasswordMatch = await auth.checkPassword(data.password, user)
423415
if (!isPasswordMatch) {
424-
handleError(res, await passwordsDoNotMatch(user))
416+
utils.handleError(res, await passwordsDoNotMatch(user))
425417
} else {
426418
// all ok, register access and return token
427419
user.loginAttempts = 0
428420
await saveLoginAttemptsToDB(user)
429421
res.status(200).json(await saveUserAccessAndReturnToken(req, user))
430422
}
431423
} catch (error) {
432-
handleError(res, error)
424+
utils.handleError(res, error)
433425
}
434426
}
435427

@@ -452,7 +444,7 @@ exports.register = async (req, res) => {
452444
res.status(201).json(response)
453445
}
454446
} catch (error) {
455-
handleError(res, error)
447+
utils.handleError(res, error)
456448
}
457449
}
458450

@@ -467,7 +459,7 @@ exports.verify = async (req, res) => {
467459
const user = await verificationExists(req.id)
468460
res.status(200).json(await verifyUser(user))
469461
} catch (error) {
470-
handleError(res, error)
462+
utils.handleError(res, error)
471463
}
472464
}
473465

@@ -486,7 +478,7 @@ exports.forgotPassword = async (req, res) => {
486478
emailer.sendResetPasswordEmailMessage(locale, item)
487479
res.status(200).json(forgotPasswordResponse(item))
488480
} catch (error) {
489-
handleError(res, error)
481+
utils.handleError(res, error)
490482
}
491483
}
492484

@@ -504,7 +496,7 @@ exports.resetPassword = async (req, res) => {
504496
const result = await markResetPasswordAsUsed(req, forgotPassword)
505497
res.status(200).json(result)
506498
} catch (error) {
507-
handleError(res, error)
499+
utils.handleError(res, error)
508500
}
509501
}
510502

@@ -520,6 +512,6 @@ exports.roleAuthorization = roles => async (req, res, next) => {
520512
}
521513
await checkPermissions(data, next)
522514
} catch (error) {
523-
handleError(res, error)
515+
utils.handleError(res, error)
524516
}
525517
}

app/controllers/auth.validate.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { errorValidation } = require('../middleware/utils')
1+
const { validationResult } = require('../middleware/utils')
22
const { check } = require('express-validator/check')
33

44
/**
@@ -30,7 +30,7 @@ exports.register = [
3030
})
3131
.withMessage('PASSWORD_TOO_SHORT_MIN_5'),
3232
(req, res, next) => {
33-
errorValidation(req, res, next)
33+
validationResult(req, res, next)
3434
}
3535
]
3636

@@ -57,7 +57,7 @@ exports.login = [
5757
})
5858
.withMessage('PASSWORD_TOO_SHORT_MIN_5'),
5959
(req, res, next) => {
60-
errorValidation(req, res, next)
60+
validationResult(req, res, next)
6161
}
6262
]
6363

@@ -72,7 +72,7 @@ exports.verify = [
7272
.isEmpty()
7373
.withMessage('IS_EMPTY'),
7474
(req, res, next) => {
75-
errorValidation(req, res, next)
75+
validationResult(req, res, next)
7676
}
7777
]
7878

@@ -89,7 +89,7 @@ exports.forgotPassword = [
8989
.isEmail()
9090
.withMessage('EMAIL_IS_NOT_VALID'),
9191
(req, res, next) => {
92-
errorValidation(req, res, next)
92+
validationResult(req, res, next)
9393
}
9494
]
9595

@@ -114,6 +114,6 @@ exports.resetPassword = [
114114
})
115115
.withMessage('PASSWORD_TOO_SHORT_MIN_5'),
116116
(req, res, next) => {
117-
errorValidation(req, res, next)
117+
validationResult(req, res, next)
118118
}
119119
]

0 commit comments

Comments
 (0)