/var/www/greso.tech/server/nsm/utils
Edit: /var/www/greso.tech/server/nsm/utils/refreshToken.util.js (1872B)
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({
where: { id: userId }
})
if (!user) {
return null
}
const role = await db.role.findOne({ where: { id: user.roleId } })
var where = { userId: userId }
var roles = []
roles.push(role.id) // add default role
if (role.key == 'su') {
where = {}
}
const userCompanies = await db.companyUsers.findAll({
where: where
})
const userBranches = await db.branchUsers.findAll({
where: where
})
// add user roles
if (role.key == 'su') {
roles = await SERVICES.AuthService.GetAllRoles()
} else {
for (var b_idx in userBranches) {
roles.push(userBranches[b_idx].roleId)
}
for (var c_idx in userCompanies) {
roles.push(userCompanies[c_idx].roleId)
}
}
return jwt.sign(
{
id: user.id,
branches: new BranchUsersModel({ rows: userBranches }),
companies: new CompanyUsersModel({ rows: userCompanies }),
app: app,
deviceId: deviceId,
platform: platform,
roleId: user.roleId,
roleKey: role.key,
roles: roles
},
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
}