/var/www/qr4y.com/server/delivery/api/controllers/auth
Edit: /var/www/qr4y.com/server/delivery/api/controllers/auth/refresh_token.js (1148B)
const { isSet, isEmail, isPhone, isEmpty, minLength, isNumber } = require('../../utils/validator.util')
const RefreshTokenUtils = require('../../utils/refreshToken.util')
const { BadRequest, Forbidden, NotFound } = require('../../responseModels/errors')
module.exports = function ({ db, logger }) {
return async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
const { refreshToken } = req.body
if (!isSet(refreshToken)) {
throw new Forbidden({ lang: req.user?.languageCode })
}
let token = await db.refreshToken.findOne({
where: { token: refreshToken }
})
if (!token) {
throw new Forbidden({ lang: req.user?.languageCode })
}
if (!RefreshTokenUtils.verify(token)) {
throw new Forbidden({ code: 1011, lang: req.user?.languageCode })
}
const { app, deviceId, platform, userId } = token
const accessToken = await RefreshTokenUtils.createAccessToken({
db,
app,
deviceId,
platform,
userId
})
return res.status(200).json({
accessToken: accessToken,
refreshToken: token.token
})
} catch (err) {
next(err)
}
}
}