experimental architecture changes, session support in progress
This commit is contained in:
27
loaders/express.js
Normal file
27
loaders/express.js
Normal 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
7
loaders/index.js
Normal 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
26
loaders/passport.js
Normal 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])
|
||||
}));
|
||||
|
||||
***/
|
||||
}
|
||||
52
package-lock.json
generated
52
package-lock.json
generated
@@ -11,6 +11,7 @@
|
||||
"dependencies": {
|
||||
"bcrypt": "^5.0.1",
|
||||
"body-parser": "^1.20.0",
|
||||
"connect-pg-simple": "^7.0.0",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.0.0",
|
||||
"express": "^4.17.3",
|
||||
@@ -72,6 +73,21 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz",
|
||||
"integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg=="
|
||||
},
|
||||
"node_modules/@types/pg": {
|
||||
"version": "8.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.5.tgz",
|
||||
"integrity": "sha512-tOkGtAqRVkHa/PVZicq67zuujI4Oorfglsr2IbKofDwBSysnaqSx7W1mDqFqdkGE6Fbgh+PZAl0r/BWON/mozw==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"pg-protocol": "*",
|
||||
"pg-types": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "8.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
||||
@@ -567,6 +583,18 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/connect-pg-simple": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/connect-pg-simple/-/connect-pg-simple-7.0.0.tgz",
|
||||
"integrity": "sha512-fbNZUkxz8m+FRbctoxAU18DzRKp8GQSL+9gTJ0+LgSCElXLon2q8tDE8V74jUzf+w2ARZX8HKKyV0laX1NUZ/Q==",
|
||||
"dependencies": {
|
||||
"@types/pg": "^8.6.1",
|
||||
"pg": "^8.7.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
@@ -2825,6 +2853,21 @@
|
||||
"defer-to-connect": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz",
|
||||
"integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg=="
|
||||
},
|
||||
"@types/pg": {
|
||||
"version": "8.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.5.tgz",
|
||||
"integrity": "sha512-tOkGtAqRVkHa/PVZicq67zuujI4Oorfglsr2IbKofDwBSysnaqSx7W1mDqFqdkGE6Fbgh+PZAl0r/BWON/mozw==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"pg-protocol": "*",
|
||||
"pg-types": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"@types/uuid": {
|
||||
"version": "8.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
||||
@@ -3204,6 +3247,15 @@
|
||||
"xdg-basedir": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"connect-pg-simple": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/connect-pg-simple/-/connect-pg-simple-7.0.0.tgz",
|
||||
"integrity": "sha512-fbNZUkxz8m+FRbctoxAU18DzRKp8GQSL+9gTJ0+LgSCElXLon2q8tDE8V74jUzf+w2ARZX8HKKyV0laX1NUZ/Q==",
|
||||
"requires": {
|
||||
"@types/pg": "^8.6.1",
|
||||
"pg": "^8.7.1"
|
||||
}
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
"dependencies": {
|
||||
"bcrypt": "^5.0.1",
|
||||
"body-parser": "^1.20.0",
|
||||
"connect-pg-simple": "^7.0.0",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.0.0",
|
||||
"express": "^4.17.3",
|
||||
|
||||
31
server.js
31
server.js
@@ -1,33 +1,18 @@
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const app = express();
|
||||
|
||||
const session = require('express-session');
|
||||
|
||||
require('dotenv').config();
|
||||
const PORT = process.env.PORT || 8088;
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
const loaders = require('./loaders');
|
||||
|
||||
app.use(express.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
async function start() {
|
||||
loaders(app);
|
||||
|
||||
const store = new session.MemoryStore();
|
||||
app.use(session({
|
||||
secret: process.env.EXPRESS_SECRET,
|
||||
cookie: { maxAge: 300000000, secure: false },
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
store,
|
||||
}));
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Listening on port ${PORT}`);
|
||||
});
|
||||
}
|
||||
|
||||
const apiRouter = require('./routes/API');
|
||||
app.use(apiRouter);
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Listening on port ${PORT}`);
|
||||
});
|
||||
start();
|
||||
|
||||
module.exports = app;
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"openapi": "3.0.3",
|
||||
"info": {
|
||||
"title": "E-Commerce Project",
|
||||
"description": "Full Stack Portfolio project built using Postgres, Express, React and TypeScript",
|
||||
"version": "0.0.1"
|
||||
},
|
||||
"paths": {}
|
||||
}
|
||||
Reference in New Issue
Block a user