2017-05-21 14:02:16 +00:00
|
|
|
const express = require('express');
|
|
|
|
const router = express.Router();
|
|
|
|
|
|
|
|
const passport = require('passport');
|
|
|
|
|
2021-03-12 00:13:38 +00:00
|
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
const secret = process.env.JWT_SECRET_KEY || 'change-me';
|
|
|
|
|
2017-05-21 14:02:16 +00:00
|
|
|
router.get('/csrf', (req, res) => {
|
|
|
|
return res.json({csrfToken: res.locals._csrf});
|
|
|
|
})
|
|
|
|
|
|
|
|
router.get('/session', (req, res) => {
|
|
|
|
let session = {
|
|
|
|
clientMaxAge: 60000, // 60 seconds
|
|
|
|
csrfToken: res.locals._csrf
|
|
|
|
}
|
|
|
|
if (req.user) {
|
|
|
|
session.user = req.user
|
2021-03-12 00:13:38 +00:00
|
|
|
const body = { '_id': req.user._id, 'username': req.user.username, 'roles':req.user.roles };
|
|
|
|
const token = jwt.sign({ user: body }, secret);
|
|
|
|
session.authToken = token
|
2017-05-21 14:02:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return res.json(session)
|
|
|
|
})
|
|
|
|
|
|
|
|
router.post('/login',
|
2017-05-29 08:16:36 +00:00
|
|
|
passport.authenticate('local', { successRedirect: '/' }));
|
2017-05-21 14:02:16 +00:00
|
|
|
|
|
|
|
router.post('/logout', (req, res) => {
|
2022-11-04 08:39:29 +00:00
|
|
|
req.logout(function(err) {
|
|
|
|
if (err) { return next(err); }
|
|
|
|
res.redirect('/');
|
|
|
|
});
|
2017-05-21 14:02:16 +00:00
|
|
|
});
|
|
|
|
|
2022-11-04 08:39:29 +00:00
|
|
|
module.exports = router;
|