diff --git a/src/dependencies.js b/src/dependencies.js index b182680..668261a 100644 --- a/src/dependencies.js +++ b/src/dependencies.js @@ -3,12 +3,18 @@ const express = require('express'); function buildDependencies() { const dependencies = {}; - const middlewares = require('./middlewares'); - dependencies.middlewares = middlewares; - + const constants = require('./constants'); const services = require('./services'); const errors = require('./errors'); + const MiddlewaresProvider = require('./middlewares'); + const middlewares = new MiddlewaresProvider({ + constants, + sessionService: services.sessionService, + profileService: services.profileService, + }).provide(); + dependencies.middlewares = middlewares; + const WebRoutesProvider = require('./routes/webRoutes'); const webRoutesProvider = new WebRoutesProvider({ express, diff --git a/src/middlewares/attachPublicKeyMiddleware.js b/src/middlewares/attachPublicKeyMiddleware.js index 4a60104..05c7758 100644 --- a/src/middlewares/attachPublicKeyMiddleware.js +++ b/src/middlewares/attachPublicKeyMiddleware.js @@ -1,5 +1,5 @@ class AttachPublicKeyMiddlewareProvider { - constructor(sessionService) { + constructor({ sessionService }) { this.sessionService = sessionService; } diff --git a/src/middlewares/index.js b/src/middlewares/index.js index 017f16d..1a316a1 100644 --- a/src/middlewares/index.js +++ b/src/middlewares/index.js @@ -1,43 +1,55 @@ -const sessionService = require('../services/sessionService'); -const AttachPublicKeyMiddlewareProvider = require('./attachPublicKeyMiddleware'); -const attachPublicKeyMiddleware = new AttachPublicKeyMiddlewareProvider( - sessionService -).provide(); +class MiddlewaresProvider { + constructor({ constants, sessionService, profileService }) { + this.constants = constants; + this.sessionService = sessionService; + this.profileService = profileService; + } -const constants = require('../constants'); -const CreateSessionMiddlewareProvider = require('./createSessionMiddleware'); -const createSessionMiddleware = new CreateSessionMiddlewareProvider({ - constants, - sessionService, -}).provide(); + provide() { + const AttachPublicKeyMiddlewareProvider = require('./attachPublicKeyMiddleware'); + const attachPublicKeyMiddleware = new AttachPublicKeyMiddlewareProvider({ + sessionService: this.sessionService, + }).provide(); -const RejectIfNotAuthorizedMiddleware = require('./rejectIfNotAuthorizedMiddleware'); -const rejectIfNotAuthorizedMiddleware = new RejectIfNotAuthorizedMiddleware({ - sessionService, -}).provide(); + const CreateSessionMiddlewareProvider = require('./createSessionMiddleware'); + const createSessionMiddleware = new CreateSessionMiddlewareProvider({ + constants: this.constants, + sessionService: this.sessionService, + }).provide(); -const RedirectHomeIfAuthorized = require('./redirectHomeIfAuthorized'); -const redirectHomeIfAuthorized = new RedirectHomeIfAuthorized({ - sessionService, -}).provide(); + const RejectIfNotAuthorizedMiddleware = require('./rejectIfNotAuthorizedMiddleware'); + const rejectIfNotAuthorizedMiddleware = new RejectIfNotAuthorizedMiddleware( + { + sessionService: this.sessionService, + } + ).provide(); -const RedirectIfNotAuthorizedMiddleware = require('./redirectIfNotAuthorizedMiddleware'); -const redirectIfNotAuthorizedMiddleware = new RedirectIfNotAuthorizedMiddleware( - { sessionService } -).provide(); + const RedirectHomeIfAuthorized = require('./redirectHomeIfAuthorized'); + const redirectHomeIfAuthorized = new RedirectHomeIfAuthorized({ + sessionService: this.sessionService, + }).provide(); -const profileService = require('../services/profileService'); -const RedirectIfMissingProfileDetailsMiddleware = require('./redirectIfMissingProfileDetailsMiddleware'); -const redirectIfMissingProfileDetailsMiddleware = - new RedirectIfMissingProfileDetailsMiddleware({ - profileService, - }).provide(); + const RedirectIfNotAuthorizedMiddleware = require('./redirectIfNotAuthorizedMiddleware'); + const redirectIfNotAuthorizedMiddleware = + new RedirectIfNotAuthorizedMiddleware({ + sessionService: this.sessionService, + }).provide(); -module.exports = { - redirectIfNotAuthorizedMiddleware, - attachPublicKeyMiddleware, - redirectIfMissingProfileDetailsMiddleware, - redirectHomeIfAuthorized, - rejectIfNotAuthorizedMiddleware, - createSessionMiddleware, -}; + const RedirectIfMissingProfileDetailsMiddleware = require('./redirectIfMissingProfileDetailsMiddleware'); + const redirectIfMissingProfileDetailsMiddleware = + new RedirectIfMissingProfileDetailsMiddleware({ + profileService: this.profileService, + }).provide(); + + return { + redirectIfNotAuthorizedMiddleware, + attachPublicKeyMiddleware, + redirectIfMissingProfileDetailsMiddleware, + redirectHomeIfAuthorized, + rejectIfNotAuthorizedMiddleware, + createSessionMiddleware, + }; + } +} + +module.exports = MiddlewaresProvider;