Spaces:
Sleeping
Sleeping
| const jwt = require('jsonwebtoken'); | |
| const JWT_SECRET = process.env.JWT_SECRET || 'amk-pos-secret-key-2024'; | |
| // Verify token middleware | |
| function verifyToken(req, res, next) { | |
| const token = req.headers['authorization']?.split(' ')[1]; | |
| if (!token) { | |
| return res.status(401).json({ error: 'No token provided' }); | |
| } | |
| try { | |
| const decoded = jwt.verify(token, JWT_SECRET); | |
| req.user = decoded; | |
| next(); | |
| } catch (error) { | |
| return res.status(401).json({ error: 'Invalid token' }); | |
| } | |
| } | |
| // Admin only middleware | |
| function adminOnly(req, res, next) { | |
| if (req.user.role !== 'admin') { | |
| return res.status(403).json({ error: 'Admin access required' }); | |
| } | |
| next(); | |
| } | |
| // Generate token | |
| function generateToken(user) { | |
| return jwt.sign( | |
| { id: user.id, username: user.username, role: user.role }, | |
| JWT_SECRET, | |
| { expiresIn: '24h' } | |
| ); | |
| } | |
| module.exports = { | |
| JWT_SECRET, | |
| verifyToken, | |
| adminOnly, | |
| generateToken | |
| }; |