lts-stats-api/app/routes/admin.js
2023-01-22 00:02:30 +01:00

71 lines
1.8 KiB
JavaScript

const express = require('express');
const passport = require('passport')
const LocalStrategy = require('passport-local');
const { initSessionsData, createUser, authenticate } = require('../controllers/adminController');
const router = express.Router();
passport.use(new LocalStrategy(async function verify(username, password, cb) {
try {
const user = await authenticate(username, password);
delete user._id;
if (user) {
return cb(null, user);
}
return cb(null, false, { message: 'Incorrect username or password.' });
} catch (err) {
return cb(null, false, { message: 'Incorrect username or password.' });
}
}));
passport.serializeUser(function(user, cb) {
process.nextTick(function() {
const { id, username, roles, firstname, lastname, vid } = user;
cb(null, { id, username, roles, firstname, lastname, vid });
});
});
passport.deserializeUser(function(user, cb) {
process.nextTick(function() {
return cb(null, user);
});
});
router.get('/init-sessions', async(req, res) => {
try {
await initSessionsData(req.query);
res.status(200);
} catch (err) {
console.log('error', err.response);
}
});
router.post('/user/create', async(req, res) => {
await createUser(req);
res.status(201);
});
router.post('/user/authenticate',
passport.authenticate('local'),
function(req, res) {
console.log('req.user :>> ', req.isAuthenticated(), req.user);
res.json(req.user);
});
router.get('/user/alive',
function(req, res) {
console.log('req.user :>> ', req.isAuthenticated());
res.status(200).json(req.user);
});
router.get('/user/logout', function(req, res, next) {
req.logout(function(err) {
if (err) { return next(err); }
req.session.destroy();
res.status(200).send();
});
});
module.exports = router;