server_photo_s85js/routes/auth.js
2026-08-11 08:45:04 +02:00

46 lines
1.1 KiB
JavaScript

const express = require('express');
const bcrypt = require('bcrypt');
const fs = require('fs');
const router = express.Router();
const { createToken, addToDenylist } = require('../utils/jwtHelpers');
// carica utenti
const userdb = JSON.parse(fs.readFileSync('./api_v1/users.json', 'utf-8'));
// LOGIN
router.post('/login', async (req, res) => {
const { email, password } = req.body;
const user = userdb.users.find((u) => u.email === email);
if (!user) {
return res.status(401).json({ message: 'Incorrect email or password' });
}
const ok = await bcrypt.compare(password, user.password);
if (!ok) {
return res.status(401).json({ message: 'Incorrect email or password' });
}
const token = createToken({
id: user.id,
email: user.email,
name: user.name,
});
res.json({ token, name: user.name });
});
// LOGOUT
router.post('/logout', (req, res) => {
const auth = req.headers.authorization || '';
const [scheme, token] = auth.split(' ');
if (scheme === 'Bearer' && token) {
addToDenylist(token);
}
res.status(204).end();
});
module.exports = router;