diff options
Diffstat (limited to 'backend/src/utils/jwt.js')
-rw-r--r-- | backend/src/utils/jwt.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/backend/src/utils/jwt.js b/backend/src/utils/jwt.js new file mode 100644 index 0000000..283b986 --- /dev/null +++ b/backend/src/utils/jwt.js @@ -0,0 +1,37 @@ +const jwt = require('jsonwebtoken'); +const env = require('../config/env'); + +/** + * Generate JWT token for a user + * @param {Object} user - User object + * @returns {String} JWT token + */ +const generateToken = (user) => { + return jwt.sign( + { + id: user._id, + role: user.role, + email: user.email + }, + env.JWT_SECRET, + { expiresIn: env.JWT_EXPIRES_IN } + ); +}; + +/** + * Verify JWT token + * @param {String} token - JWT token + * @returns {Object} Decoded token + */ +const verifyToken = (token) => { + try { + return jwt.verify(token, env.JWT_SECRET); + } catch (error) { + throw new Error('Invalid token'); + } +}; + +module.exports = { + generateToken, + verifyToken +};
\ No newline at end of file |