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;