experimental architecture changes, session support in progress

This commit is contained in:
Mikayla Dobson
2022-07-04 15:38:40 -05:00
parent e721cd425f
commit d84675910a
9 changed files with 121 additions and 32 deletions

27
loaders/express.js Normal file
View File

@@ -0,0 +1,27 @@
require('dotenv').config();
const cors = require('cors');
const session = require('express-session');
const { json, urlencoded } = require('express');
module.exports = (app) => {
app.use(cors());
app.use(json());
app.use(urlencoded({
extended: true
}));
app.use(require('../routes/API'));
app.use(session({
secret: process.env.EXPRESS_SECRET,
cookie: { maxAge: 8*60*60*1000, secure: false },
resave: false,
saveUninitialized: true,
store: new (require('connect-pg-simple')(session))({
conString: process.env.CONNECTION,
createTableIfMissing: true,
})
}));
}

7
loaders/index.js Normal file
View File

@@ -0,0 +1,7 @@
const passportLoader = require('./passport');
const expressLoader = require('./express');
module.exports = async (app) => {
const passport = await passportLoader(app);
const express = await expressLoader(app);
}

26
loaders/passport.js Normal file
View File

@@ -0,0 +1,26 @@
const passport = require('passport');
const LocalStrategy = require('passport-local');
const client = require('../db/Client');
module.exports = (app) => {
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
done(null, { id });
});
/***
** TO DO: FINISH CONFIGURING LOCAL STRATEGY
app.use(new LocalStrategy(async (email, password, done) => {
const newClient = client();
const account = await newClient.query("SELECT * FROM users WHERE email = ($1)", [email])
}));
***/
}

11
loaders/swagger.js Normal file
View File

@@ -0,0 +1,11 @@
const swaggerUI = require('swagger-ui-express');
const yaml = require('js-yaml');
const fs = require('fs');
const path = require('path');
// Loading via yml.safeLoad to avoid errors with special characters during processing
const swaggerDocument = yaml.safeLoad(fs.readFileSync(path.resolve(__dirname, '../swagger.yml'), 'utf8'));
const app = require('../server');
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerDocument));