mirror of
https://github.com/aljazceru/landscape-template.git
synced 2026-01-03 14:34:27 +01:00
refactor: migrate to jwt sessions instead of store sessions
This commit is contained in:
@@ -1,52 +1,19 @@
|
||||
|
||||
const express = require('express');
|
||||
const session = require("express-session");
|
||||
const passport = require("passport");
|
||||
const lnurlAuth = require("passport-lnurl-auth");
|
||||
var cors = require('cors');
|
||||
const { SESSION_SECRET } = require('../utils/consts');
|
||||
const createGlobalModule = require('../utils/createGlobalModule');
|
||||
const sessionsStore = require('./sessions-store');
|
||||
const cookieParser = require('cookie-parser');
|
||||
|
||||
const createExpressApp = (router) => {
|
||||
|
||||
const app = express();
|
||||
const routerBasePath = process.env.LOCAL ? `/dev` : `/.netlify/functions`
|
||||
|
||||
app.use(cookieParser());
|
||||
app.use(cors({
|
||||
origin: ['http://localhost:3000', 'https://studio.apollographql.com'],
|
||||
credentials: true,
|
||||
}))
|
||||
|
||||
app.use(session({
|
||||
secret: SESSION_SECRET,
|
||||
resave: false,
|
||||
store: sessionsStore,
|
||||
saveUninitialized: true,
|
||||
cookie: {
|
||||
maxAge: 30 * 24 * 60 * 60 * 1000 // 30 days
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
passport.use(new lnurlAuth.Strategy(function (linkingPublicKey, done) {
|
||||
// The user has successfully authenticated using lnurl-auth.
|
||||
// The linked public key is provided here.
|
||||
// You can use this as a unique reference for the user similar to a username or email address.
|
||||
const user = { id: linkingPublicKey };
|
||||
done(null, user);
|
||||
}));
|
||||
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
app.use(passport.authenticate("lnurl-auth"));
|
||||
passport.serializeUser(function (user, done) {
|
||||
done(null, user?.id);
|
||||
});
|
||||
passport.deserializeUser(function (id, done) {
|
||||
done(null, { id } || null);
|
||||
});
|
||||
|
||||
if (router)
|
||||
app.use(routerBasePath, router);
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
const createExpressApp = require("./express-app");
|
||||
const sessionsStore = require("./sessions-store");
|
||||
|
||||
|
||||
module.exports = {
|
||||
createExpressApp,
|
||||
sessionsStore,
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
const createGlobalModule = require("../utils/createGlobalModule");
|
||||
|
||||
let sessionsStore;
|
||||
|
||||
const createSessionStore = () => {
|
||||
const session = require("express-session");
|
||||
var Store = require('connect-pg-simple')(session);
|
||||
console.log("New Sessions Store");
|
||||
return new Store({
|
||||
createTableIfMissing: true,
|
||||
tableName: "user_sessions",
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
sessionsStore = createGlobalModule('sessions-store', createSessionStore);
|
||||
|
||||
module.exports = sessionsStore;
|
||||
Reference in New Issue
Block a user