diff --git a/loaders/express.js b/loaders/express.js index d7ccec3..8341881 100644 --- a/loaders/express.js +++ b/loaders/express.js @@ -2,20 +2,21 @@ require('dotenv').config(); const cors = require('cors'); const { pool } = require('../db/Pool'); const session = require('express-session'); -const { json, urlencoded } = require('express'); +// const { json, urlencoded } = require('express'); +const bodyParser = require('body-parser'); module.exports = (app) => { app.use(cors()); - app.use(json()); - app.use(urlencoded({ - extended: true - })); + app.use(bodyParser.json()); + app.use(bodyParser.urlencoded({ extended: true })); + + app.set('trust proxy', 1);`` app.use(session({ secret: process.env.EXPRESS_SECRET, cookie: { maxAge: 8 * 60 * 60 * 1000, secure: false }, - resave: true, - saveUninitialized: true, + resave: false, + saveUninitialized: false, store: new (require('connect-pg-simple')(session))({ pool: pool, createTableIfMissing: true, diff --git a/loaders/index.js b/loaders/index.js index 7ef64c2..7f5ef10 100644 --- a/loaders/index.js +++ b/loaders/index.js @@ -4,8 +4,8 @@ const routes = require('../routes/API'); module.exports = async (app) => { const express = await expressLoader(app); - const passport = await passportLoader(express); - await routes(app, passport); + await passportLoader(express); + await routes(app); console.log('loaders called'); } \ No newline at end of file diff --git a/loaders/passport.js b/loaders/passport.js index d926d1f..90e731d 100644 --- a/loaders/passport.js +++ b/loaders/passport.js @@ -7,18 +7,22 @@ module.exports = (app) => { app.use(passport.session()); passport.serializeUser((user, done) => { - done(null, user.id); + process.nextTick(() => { + done(null, user.id); + }) }); - passport.deserializeUser((id, done) => { - done(null, { id }); + passport.deserializeUser((user, done) => { + process.nextTick(async () => { + const user = await LoginService({ email: user.email, password: user.password }); + return (user) ? done(null, user) : done(null, false); + }) }); - /*** - ** TO DO: FINISH CONFIGURING LOCAL STRATEGY - ***/ - - passport.use(new LocalStrategy(async (email, password, done) => { + passport.use(new LocalStrategy({ + usernameField: 'email', + passwordField: 'password' + }, async (email, password, done) => { try { const response = await LoginService({ email: email, password: password }); return done(null, response); diff --git a/package-lock.json b/package-lock.json index 3e961a9..6eca9fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "bcrypt": "^5.0.1", "body-parser": "^1.20.0", "connect-pg-simple": "^7.0.0", + "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.0.0", "express": "^4.17.3", @@ -627,6 +628,26 @@ "node": ">= 0.6" } }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -3279,6 +3300,22 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + } + } + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", diff --git a/routes/login.js b/routes/login.js index c8e1674..edeb758 100644 --- a/routes/login.js +++ b/routes/login.js @@ -4,10 +4,20 @@ const { LoginService } = require('../services/Auth'); module.exports = (app, passport) => { app.use('/api/login', loginRouter); - app.use('/api/login', passport.authenticate('local')); + // loginRouter.post('/', (req, res) => + // passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' }) + // (req, res => { + // try { + // const data = LoginService(email, password); + // const { session, userProfile } = data; + // res.status(200).send({ session, userProfile }); + // } catch(e) { + // next(e); + // } + // } + // )); loginRouter.post('/', async (req, res, next) => { - console.log('login called'); const { email, password } = req.body; /** @@ -24,7 +34,6 @@ module.exports = (app, passport) => { try { const data = await LoginService(email, password); const { session, userProfile } = data; - res.status(200).send({ session, userProfile }); } catch(e) { next(e);