const express = require('express'); const bcrypt = require('bcryptjs'); const jwt = require('jsonwebtoken'); const { pool } = require('../config/databases'); require('dotenv').config(); const router = express.Router(); router.post('/login', async (req, res) => { const { username, password } = req.body; try { const [rows] = await pool.query( 'SELECT * FROM users WHERE username = ?', [username] ); if (rows.length === 0) { return res.status(400).json({ message: 'Invalid credentials' }); } const user = rows[0]; const isMatch = await bcrypt.compare(password, user.password); if (!isMatch) { return res.status(401).json({ message: 'username or password incorect' }); } const payload = { id: user.id, username: user.username, role: user.role, }; const token = jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '2h', // max lifespan }); res.json({ token }); } catch (err) { console.error(err); res.status(500).json({ message: 'Server error' }); } }); module.exports = router;