Newer
Older
const logger = require('@pubsweet/logger')
const querystring = require('querystring')
const checkForUndefinedParams = (...params) => {
if (params.includes(undefined)) {
return false
}
return true
}
const validateEmailAndToken = async ({ email, token, userModel }) => {
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
try {
const user = await userModel.findByEmail(email)
if (user) {
if (token !== user.passwordResetToken) {
logger.error(
`invite pw reset tokens do not match: REQ ${token} vs. DB ${
user.passwordResetToken
}`,
)
return {
success: false,
status: 400,
message: 'invalid request',
}
}
return { success: true, user }
}
} catch (e) {
if (e.name === 'NotFoundError') {
logger.error('invite pw reset on non-existing user')
return {
success: false,
status: 404,
message: 'user not found',
}
} else if (e.name === 'ValidationError') {
logger.error('invite pw reset validation error')
return {
success: false,
status: 400,
message: e.details[0].message,
}
}
logger.error('internal server error')
return {
success: false,
status: 500,
message: e.details[0].message,
}
}
return {
success: false,
status: 500,
message: 'something went wrong',
}
}
const handleNotFoundError = async (error, item) => {
const response = {
success: false,
status: 500,
message: 'Something went wrong',
}
if (error.name === 'NotFoundError') {
logger.error(`invalid ${item} id`)
response.status = 404
response.message = `${item} not found`
return response
}
logger.error(error)
return response
}
const getBaseUrl = req => `${req.protocol}://${req.get('host')}`
const createUrl = (baseUrl, slug, queryParams = null) =>
!queryParams
? `${baseUrl}${slug}`
: `${baseUrl}${slug}?${querystring.encode(queryParams)}`
Sebastian Mihalache
committed
const getExpectedDate = ({ timestamp = Date.now(), daysExpected = 0 }) => {
const date = new Date(timestamp)
let expectedDate = date.getDate() + daysExpected
date.setDate(expectedDate)
expectedDate = date.toLocaleDateString('en-US', {
day: 'numeric',
month: 'long',
year: 'numeric',
})
return expectedDate
}
module.exports = {
checkForUndefinedParams,
validateEmailAndToken,
handleNotFoundError,
getBaseUrl,
Sebastian Mihalache
committed
getExpectedDate,