91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
//create express router
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
|
|
var ironSession = require("iron-session/express").ironSession;
|
|
var session = ironSession({
|
|
cookieName: "myapp_cookiename",
|
|
// password: process.env.SECRET_COOKIE_PASSWORD,
|
|
password: process.env.IRON_SESSION,
|
|
cookieOptions: {
|
|
secure: process.env.NODE_ENV === "production",
|
|
},
|
|
});
|
|
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
// crate get
|
|
router.get('/', session, async (req, res) => {
|
|
try {
|
|
const username = req.query.username;
|
|
const password = req.query.password;
|
|
|
|
if(username != 'admin' && password != 'admin'){
|
|
return res.status(401).send({ status: false, message: 'username or password is wrong' })
|
|
}
|
|
|
|
data = {
|
|
role :'admin',
|
|
ini : 'aran'
|
|
}
|
|
|
|
// expired in 1 day
|
|
const accessToken = jwt.sign(data, process.env.ACCESS_TOKEN_SECRET , { expiresIn: '1d' });
|
|
|
|
|
|
req.session.data = {
|
|
accessToken: accessToken,
|
|
role : "admin"
|
|
}
|
|
|
|
await req.session.save();
|
|
|
|
return res.status(200).send({ status: true, message: 'login success' , accessToken: accessToken })
|
|
|
|
} catch (error) {
|
|
console.log(error);
|
|
res.status(500).send({ message: error.message });
|
|
}
|
|
})
|
|
|
|
// create '/logout' get method
|
|
router.get('/logout', session, authenticateToken , async (req, res) => {
|
|
try{
|
|
|
|
console.log(req.session)
|
|
// req.session.destroy();
|
|
return res.status(200).send({ status: true, message: 'logout success' })
|
|
}
|
|
catch(error){
|
|
console.log(error);
|
|
res.status(500).send({ message: error.message });
|
|
}
|
|
})
|
|
|
|
// create '/' post
|
|
router.post('/', authenticateToken, async (req, res) => {
|
|
console.log(req.user);
|
|
res.status(200).send({ status: true, message: 'login success' , user: req.user })
|
|
})
|
|
|
|
function authenticateToken(req,res,next){
|
|
// console.log(req.session , " ini authenticate")
|
|
const authHeader = req.headers['authorization']
|
|
const token = authHeader && authHeader.split(' ')[1]
|
|
if(token == null) return res.sendStatus(401)
|
|
req.session.destroy();
|
|
|
|
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
|
|
if(err) return res.sendStatus(403)
|
|
req.session.destroy();
|
|
req.user = user
|
|
next()
|
|
})
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = router; |