feature: authentuication

This commit is contained in:
José Conde
2023-01-22 00:02:30 +01:00
parent e5d9ced955
commit 15f012530e
10 changed files with 496 additions and 38 deletions

View File

@ -1,7 +1,35 @@
const express = require('express');
const { initSessionsData } = require('../controllers/adminController');
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) => {
@ -13,4 +41,31 @@ router.get('/init-sessions', async(req, res) => {
}
});
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;

View File

@ -43,7 +43,6 @@ router.get('/sessions/all/now', async(req, res) => {
});
router.get('/flightplans/latest', async(req, res) => {
console.log('object :>> ', '/flightplans/latest');
try {
const data = await getLatestsFlightPlans();
res.status(200).json(data);