52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
const express = require("express");
|
|
const bodyParser = require("body-parser");
|
|
const jwt = require("jsonwebtoken");
|
|
|
|
const app = express();
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
const generateToken = (user) => {
|
|
return jwt.sign({ user }, "hello kitty", { expiresIn: "1h" })
|
|
}
|
|
|
|
const authenticateToken = (req, res, next) => {
|
|
const authHeader = req.headers['authorization'];
|
|
const token = authHeader && authHeader.split(" ")[1];
|
|
|
|
if (token == null)
|
|
return res.sendStatus(401);
|
|
|
|
jwt.verify(token, "hello kitty", (error, user) => {
|
|
if (error)
|
|
return res.sendStatus(401);
|
|
|
|
req.user = user;
|
|
next();
|
|
})
|
|
}
|
|
|
|
app.post('/jwt-login', (req, res) => {
|
|
const { username, password } = req.body;
|
|
if (username == "admin" && password == "password") {
|
|
const user = { id: 1, username };
|
|
const accessToken = generateToken(user);
|
|
res.json(accessToken);
|
|
} else {
|
|
res.status(401).send("Invaild credentials")
|
|
}
|
|
})
|
|
|
|
app.post("/jwt-logout", authenticateToken, (req, res) => {
|
|
res.send("Logged out successful");
|
|
})
|
|
|
|
app.get("/jwt-profile", authenticateToken, (req, res) => {
|
|
res.send(`Welcome ${req.user.user.username}`)
|
|
})
|
|
|
|
app.listen(3000, (error) => {
|
|
if (error)
|
|
console.log(error);
|
|
console.log("Server is running: http://localhost:3000");
|
|
}) |