const jwt = require('jsonwebtoken'); const bcrypt = require('bcryptjs'); // `extra` adds claims, e.g. { setup: true } for the first-run setup wizard's token. const generateToken = (userId, role, tokenVersion = 0, extra = {}) => { return jwt.sign( { ...extra, id: userId, role, tokenVersion }, process.env.JWT_SECRET, { expiresIn: '30d' } ); }; const hashPassword = async (password) => { const salt = await bcrypt.genSalt(10); return await bcrypt.hash(password, salt); }; const comparePassword = async (enteredPassword, storedPassword) => { return await bcrypt.compare(enteredPassword, storedPassword); }; module.exports = { generateToken, hashPassword, comparePassword, };