routes/userRoutes.js
Sun Apr 06 2025 18:06:02 GMT+0000 (Coordinated Universal Time)
Saved by
@exam3
const express = require('express');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const User = require('../models/User');
const router = express.Router();
function verifyToken(req, res, next) {
const token = req.headers['authorization'];
if (!token) return res.status(403).send('No token provided');
jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
if (err) return res.status(401).send('Invalid token');
req.userId = decoded.id;
next();
});
}
router.post('/register', async (req, res) => {
const hashedPassword = await bcrypt.hash(req.body.password, 8);
const user = new User({ ...req.body, password: hashedPassword });
await user.save();
res.send('User registered');
});
router.post('/login', async (req, res) => {
const user = await User.findOne({ email: req.body.email });
if (!user) return res.status(404).send('User not found');
const valid = await bcrypt.compare(req.body.password, user.password);
if (!valid) return res.status(401).send('Wrong password');
const token = jwt.sign({ id: user._id }, process.env.JWT_SECRET, { expiresIn: '1h' });
res.send({ token });
});
router.get('/dashboard', verifyToken, async (req, res) => {
const user = await User.findById(req.userId, { password: 0 });
res.send(user);
});
module.exports = router;
content_copyCOPY
Comments