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": {
|
"dependencies": {
|
||||||
"bcrypt": "^5.0.1",
|
"bcrypt": "^5.0.1",
|
||||||
"body-parser": "^1.20.0",
|
"body-parser": "^1.20.0",
|
||||||
|
"connect-pg-simple": "^7.0.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.0.0",
|
"dotenv": "^16.0.0",
|
||||||
"express": "^4.17.3",
|
"express": "^4.17.3",
|
||||||
@@ -72,6 +73,21 @@
|
|||||||
"node": ">=6"
|
"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": {
|
"node_modules/@types/uuid": {
|
||||||
"version": "8.3.4",
|
"version": "8.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
||||||
@@ -567,6 +583,18 @@
|
|||||||
"node": ">=8"
|
"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": {
|
"node_modules/console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
"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"
|
"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": {
|
"@types/uuid": {
|
||||||
"version": "8.3.4",
|
"version": "8.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
|
||||||
@@ -3204,6 +3247,15 @@
|
|||||||
"xdg-basedir": "^4.0.0"
|
"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": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcrypt": "^5.0.1",
|
"bcrypt": "^5.0.1",
|
||||||
"body-parser": "^1.20.0",
|
"body-parser": "^1.20.0",
|
||||||
|
"connect-pg-simple": "^7.0.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.0.0",
|
"dotenv": "^16.0.0",
|
||||||
"express": "^4.17.3",
|
"express": "^4.17.3",
|
||||||
|
|||||||
31
server.js
31
server.js
@@ -1,33 +1,18 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const cors = require('cors');
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
const session = require('express-session');
|
|
||||||
|
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
const PORT = process.env.PORT || 8088;
|
const PORT = process.env.PORT || 8088;
|
||||||
|
|
||||||
app.use(cors());
|
const loaders = require('./loaders');
|
||||||
app.use(express.json());
|
|
||||||
|
|
||||||
app.use(express.urlencoded({
|
async function start() {
|
||||||
extended: true
|
loaders(app);
|
||||||
}));
|
|
||||||
|
|
||||||
const store = new session.MemoryStore();
|
app.listen(PORT, () => {
|
||||||
app.use(session({
|
console.log(`Listening on port ${PORT}`);
|
||||||
secret: process.env.EXPRESS_SECRET,
|
});
|
||||||
cookie: { maxAge: 300000000, secure: false },
|
}
|
||||||
resave: false,
|
|
||||||
saveUninitialized: false,
|
|
||||||
store,
|
|
||||||
}));
|
|
||||||
|
|
||||||
const apiRouter = require('./routes/API');
|
start();
|
||||||
app.use(apiRouter);
|
|
||||||
|
|
||||||
app.listen(PORT, () => {
|
|
||||||
console.log(`Listening on port ${PORT}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = app;
|
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