another
This commit is contained in:
parent
3c5aa812ab
commit
72b68e772b
2 changed files with 38 additions and 26 deletions
|
|
@ -1,33 +1,39 @@
|
||||||
const uuid = require('uuid');
|
const uuid = require('uuid');
|
||||||
|
|
||||||
const sessionService = require('../services/sessionService');
|
class CreateSessionMiddlewareProvider {
|
||||||
const constants = require('../constants');
|
constructor({ constants, sessionService }) {
|
||||||
|
this.constants = constants;
|
||||||
async function setAndPersistNewSession(res) {
|
this.sessionService = sessionService;
|
||||||
const sessionUuid = uuid.v7();
|
|
||||||
res.cookie('sessionUuid', sessionUuid, {
|
|
||||||
httpOnly: true,
|
|
||||||
maxAge: constants.DEFAULT_SESSION_DURATION_SECONDS * 1000,
|
|
||||||
});
|
|
||||||
return await sessionService.createSession(sessionUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function createSessionMiddleware(req, res, next) {
|
|
||||||
const sessionUuid = req.cookies.sessionUuid;
|
|
||||||
|
|
||||||
if (!sessionUuid) {
|
|
||||||
const newSession = await setAndPersistNewSession(res);
|
|
||||||
req.cookies.sessionUuid = newSession.uuid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sessionUuid) {
|
provide() {
|
||||||
if (!(await sessionService.isSessionValid(sessionUuid))) {
|
return async (req, res, next) => {
|
||||||
const newSession = await setAndPersistNewSession(res);
|
const sessionUuid = req.cookies.sessionUuid;
|
||||||
req.cookies.sessionUuid = newSession.uuid;
|
|
||||||
}
|
if (!sessionUuid) {
|
||||||
|
const newSession = await this.setAndPersistNewSession(res);
|
||||||
|
req.cookies.sessionUuid = newSession.uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sessionUuid) {
|
||||||
|
if (!(await this.sessionService.isSessionValid(sessionUuid))) {
|
||||||
|
const newSession = await this.setAndPersistNewSession(res);
|
||||||
|
req.cookies.sessionUuid = newSession.uuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
async setAndPersistNewSession(res) {
|
||||||
|
const sessionUuid = uuid.v7();
|
||||||
|
res.cookie('sessionUuid', sessionUuid, {
|
||||||
|
httpOnly: true,
|
||||||
|
maxAge: this.constants.DEFAULT_SESSION_DURATION_SECONDS * 1000,
|
||||||
|
});
|
||||||
|
return await this.sessionService.createSession(sessionUuid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = createSessionMiddleware;
|
module.exports = CreateSessionMiddlewareProvider;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ const redirectIfNotAuthorizedMiddleware = require('./redirectIfNotAuthorizedMidd
|
||||||
const redirectIfMissingProfileDetailsMiddleware = require('./redirectIfMissingProfileDetailsMiddleware');
|
const redirectIfMissingProfileDetailsMiddleware = require('./redirectIfMissingProfileDetailsMiddleware');
|
||||||
const redirectHomeIfAuthorized = require('./redirectHomeIfAuthorized');
|
const redirectHomeIfAuthorized = require('./redirectHomeIfAuthorized');
|
||||||
const rejectIfNotAuthorizedMiddleware = require('./rejectIfNotAuthorizedMiddleware');
|
const rejectIfNotAuthorizedMiddleware = require('./rejectIfNotAuthorizedMiddleware');
|
||||||
const createSessionMiddleware = require('./createSessionMiddleware');
|
|
||||||
|
|
||||||
const sessionService = require('../services/sessionService');
|
const sessionService = require('../services/sessionService');
|
||||||
const AttachPublicKeyMiddlewareProvider = require('./attachPublicKeyMiddleware');
|
const AttachPublicKeyMiddlewareProvider = require('./attachPublicKeyMiddleware');
|
||||||
|
|
@ -10,6 +9,13 @@ const attachPublicKeyMiddleware = new AttachPublicKeyMiddlewareProvider(
|
||||||
sessionService
|
sessionService
|
||||||
).provide();
|
).provide();
|
||||||
|
|
||||||
|
const constants = require('../constants');
|
||||||
|
const CreateSessionMiddlewareProvider = require('./createSessionMiddleware');
|
||||||
|
const createSessionMiddleware = new CreateSessionMiddlewareProvider({
|
||||||
|
constants,
|
||||||
|
sessionService,
|
||||||
|
}).provide();
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
redirectIfNotAuthorizedMiddleware,
|
redirectIfNotAuthorizedMiddleware,
|
||||||
attachPublicKeyMiddleware,
|
attachPublicKeyMiddleware,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue