check if session is expired
This commit is contained in:
parent
e528f1351a
commit
7c2514a9a6
4 changed files with 51 additions and 19 deletions
|
|
@ -14,9 +14,9 @@ app.use(express.json());
|
||||||
app.set('view engine', 'ejs');
|
app.set('view engine', 'ejs');
|
||||||
app.set('views', path.join(__dirname, 'views'));
|
app.set('views', path.join(__dirname, 'views'));
|
||||||
|
|
||||||
const cookieMiddleware = require('./middlewares/cookieMiddleware');
|
const createSessionMiddleware = require('./middlewares/sessionMiddleware');
|
||||||
|
|
||||||
app.use(cookieMiddleware);
|
app.use(createSessionMiddleware);
|
||||||
|
|
||||||
const webRoutes = require('./routes/webRoutes');
|
const webRoutes = require('./routes/webRoutes');
|
||||||
const apiRoutes = require('./routes/apiRoutes');
|
const apiRoutes = require('./routes/apiRoutes');
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
const uuid = require("uuid");
|
|
||||||
|
|
||||||
const sessionService = require('../services/sessionService');
|
|
||||||
|
|
||||||
async function cookieMiddleware(req, res, next) {
|
|
||||||
if (!req.cookies.sessionUuid) {
|
|
||||||
const sessionUuid = uuid.v7();
|
|
||||||
res.cookie('sessionUuid', sessionUuid, { httpOnly: true, maxAge: 86400000 });
|
|
||||||
await sessionService.createSession(sessionUuid);
|
|
||||||
}
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = cookieMiddleware;
|
|
||||||
27
src/middlewares/sessionMiddleware.js
Normal file
27
src/middlewares/sessionMiddleware.js
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
const uuid = require("uuid");
|
||||||
|
|
||||||
|
const sessionService = require('../services/sessionService');
|
||||||
|
const constants = require('../constants');
|
||||||
|
|
||||||
|
async function setAndPersistNewSession(res) {
|
||||||
|
const sessionUuid = uuid.v7();
|
||||||
|
res.cookie('sessionUuid', sessionUuid, { httpOnly: true, maxAge: constants.DEFAULT_SESSION_DURATION_SECONDS * 1000 });
|
||||||
|
await sessionService.createSession(sessionUuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createSessionMiddleware(req, res, next) {
|
||||||
|
|
||||||
|
if (!req.cookies.sessionUuid) {
|
||||||
|
await setAndPersistNewSession(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.cookies.sessionUuid) {
|
||||||
|
if (await sessionService.isSessionExpired(req.cookies.sessionUuid)) {
|
||||||
|
await setAndPersistNewSession(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createSessionMiddleware;
|
||||||
|
|
@ -6,7 +6,6 @@ const SessionNpubbed = require('../models/SessionNpubbed');
|
||||||
const constants = require('../constants');
|
const constants = require('../constants');
|
||||||
|
|
||||||
async function createSession(sessionUuid) {
|
async function createSession(sessionUuid) {
|
||||||
|
|
||||||
const currentTimestamp = new Date();
|
const currentTimestamp = new Date();
|
||||||
const expiryTimestamp = new Date(currentTimestamp.getTime());
|
const expiryTimestamp = new Date(currentTimestamp.getTime());
|
||||||
expiryTimestamp.setSeconds(expiryTimestamp.getSeconds() + constants.DEFAULT_SESSION_DURATION_SECONDS);
|
expiryTimestamp.setSeconds(expiryTimestamp.getSeconds() + constants.DEFAULT_SESSION_DURATION_SECONDS);
|
||||||
|
|
@ -18,6 +17,24 @@ async function createSession(sessionUuid) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function isSessionExpired(sessionUuid) {
|
||||||
|
const currentSession = await Session.findOne({
|
||||||
|
where: {
|
||||||
|
'uuid': sessionUuid
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!currentSession) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSession.expires_at <= new Date()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
async function relateSessionToNpub(sessionUuid, npub) {
|
async function relateSessionToNpub(sessionUuid, npub) {
|
||||||
await SessionNpubbed.create({
|
await SessionNpubbed.create({
|
||||||
session_npubbed_uuid: uuid.v7(),
|
session_npubbed_uuid: uuid.v7(),
|
||||||
|
|
@ -34,16 +51,18 @@ async function isSessionAlreadyRelatedToNpub(sessionUuid, npub) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* async function getNpubRelatedToSession(sessionUuid) {
|
/* async function getNpubRelatedToSession(sessionUuid) {
|
||||||
if (SessionNpubbed.findOne({
|
if (SessionNpubbed.findOne({
|
||||||
where: { 'sessionUuid': sessionUuid }
|
where: { 'sessionUuid': sessionUuid }
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
async function isSessionAuthorized(sessionUuid) {
|
async function isSessionAuthorized(sessionUuid) {
|
||||||
|
|
||||||
} */
|
} */
|
||||||
|
|
||||||
exports.createSession = createSession;
|
exports.createSession = createSession;
|
||||||
|
exports.isSessionExpired = isSessionExpired;
|
||||||
exports.relateSessionToNpub = relateSessionToNpub;
|
exports.relateSessionToNpub = relateSessionToNpub;
|
||||||
exports.isSessionAlreadyRelatedToNpub = isSessionAlreadyRelatedToNpub;
|
exports.isSessionAlreadyRelatedToNpub = isSessionAlreadyRelatedToNpub;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue