/var/www/p4ela.kz/server/delivery/api/utils
Edit: /var/www/p4ela.kz/server/delivery/api/utils/refreshToken.util.js (1687B)
const { v4: uuidv4 } = require('uuid')
const config = require('../../config/app.json')
const jwt = require('jsonwebtoken')
const { CompanyUsersModel, BranchUsersModel } = require('../responseModels')
exports.verify = (token) => {
return token.expiryDate.getTime() > new Date().getTime()
}
exports.createAccessToken = async ({ db, app, deviceId, platform, userId }) => {
const user = await db.user.findOne({
include: [
{
model: db.language
},
],
where: { id: userId }
})
if (!user) {
return null
}
const userCompanies = await db.companyUsers.findAll({
where: { userId: userId }
})
const userBranches = await db.branchUsers.findAll({
where: { userId: userId }
})
const role = await db.role.findOne({ where: { id: user.roleId } })
const driver = await db.driver.findOne({ where: { userId: user.id } })
return jwt.sign(
{
id: user.id,
uid: user.uid,
branches: new BranchUsersModel({ rows: userBranches }),
companies: new CompanyUsersModel({ rows: userCompanies }),
driverId: driver?.id || 0,
languageCode: user.language.code,
app: app,
deviceId: deviceId,
platform: platform,
roleId: user.roleId,
roleKey: role.key
},
config.jwt.secret,
{
expiresIn: config.jwt.accessTokenExpires
}
)
}
exports.createRefreshToken = async ({ db, app, deviceId, platform, userId }) => {
let expiredAt = new Date()
expiredAt.setSeconds(expiredAt.getSeconds() + config.jwt.refreshTokenExpires)
let _token = uuidv4()
let refreshToken = await db.refreshToken.create({
app: app,
deviceId: deviceId,
platform: platform,
token: _token,
userId: userId,
expiryDate: expiredAt.getTime()
})
return refreshToken.token
}