const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const app = express();
const accessTokenSecret = 'somerandomaccesstoken';
app.use(bodyParser.json());
const authenticateJWT = (req, res, next) => {
const authHeader = req.headers.authorization;
if (authHeader) {
const token = authHeader.split(' ')[1];
//const token = authHeader;
//console.log(`${authHeader} \n`);
//console.log(`${token} \n`);
//console.log(`${accessTokenSecret} \n`);
//console.log(jwt.verify(token, accessTokenSecret));
jwt.verify(token, accessTokenSecret, (err, user) => {
if (err) {
console.log('Bledny token');
return res.sendStatus(403);
}
console.log('Poprawny token');
req.user = user;
next();
});
} else {
res.sendStatus(401);
}
}
const books = [
{
"author": "Chinua Achebe",
"country": "Nigeria",
"language": "English",
"pages": 209,
"title": "Things Fall Apart",
"year": 1958
},
{
"author": "Hans Christian Andersen",
"country": "Denmark",
"language": "Danish",
"pages": 784,
"title": "Fairy tales",
"year": 1836
},
{
"author": "Dante Alighieri",
"country": "Italy",
"language": "Italian",
"pages": 928,
"title": "The Divine Comedy",
"year": 1315
},
]
app.get('/books', authenticateJWT, (req, res) => {
res.json(books);
});
app.post('/books', authenticateJWT, (req, res) => {
const { role } = req.user;
if (role !== 'admin') {
return res.sendStatus(403);
}
const book = req.body;
books.push(book);
res.send('book added successfully');
});
app.listen(4000, () => {
console.log('Books service started on port 4000');
});