aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src/utils/jwt.js
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/utils/jwt.js')
-rw-r--r--backend/src/utils/jwt.js37
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