6 changed files with 125 additions and 73 deletions
@ -1,47 +1,47 @@ |
|||
const express = require('express'); |
|||
const bcrypt = require('bcryptjs'); |
|||
const jwt = require('jsonwebtoken'); |
|||
const pool = require('../config/databases'); |
|||
const { pool } = require('../config/databases'); |
|||
require('dotenv').config(); |
|||
|
|||
const router = express.Router(); |
|||
|
|||
router.post('/login', async (req, res) => { |
|||
const { username, password } = req.body; |
|||
const { username, password } = req.body; |
|||
|
|||
try { |
|||
const [rows] = await pool.query( |
|||
'SELECT * FROM users WHERE username = ?', |
|||
[username] |
|||
); |
|||
try { |
|||
const [rows] = await pool.query( |
|||
'SELECT * FROM users WHERE username = ?', |
|||
[username] |
|||
); |
|||
|
|||
if (rows.length === 0) { |
|||
return res.status(401).json({ message: 'Invalid credentials' }); |
|||
} |
|||
if (rows.length === 0) { |
|||
return res.status(401).json({ message: 'Invalid credentials' }); |
|||
} |
|||
|
|||
const user = rows[0]; |
|||
const user = rows[0]; |
|||
|
|||
const isMatch = await bcrypt.compare(password, user.password); |
|||
const isMatch = await bcrypt.compare(password, user.password); |
|||
|
|||
if (!isMatch) { |
|||
return res.status(401).json({ message: 'Invalid credentials' }); |
|||
} |
|||
if (!isMatch) { |
|||
return res.status(401).json({ message: 'Invalid credentials' }); |
|||
} |
|||
|
|||
const payload = { |
|||
id: user.id, |
|||
username: user.username, |
|||
role: user.role, |
|||
}; |
|||
|
|||
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' }); |
|||
} |
|||
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; |
|||
|
|||
Loading…
Reference in new issue