refactor middlewares

This commit is contained in:
counterweight 2025-03-05 15:46:51 +01:00
parent efa855c60a
commit 76efca914a
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
2 changed files with 31 additions and 19 deletions

View file

@ -3,8 +3,20 @@ const express = require('express');
function buildDependencies() { function buildDependencies() {
const dependencies = {}; const dependencies = {};
const redirectIfNotAuthorizedMiddleware = require('./middlewares/redirectIfNotAuthorizedMiddleware');
const attachPublicKeyMiddleware = require('./middlewares/attachPublicKeyMiddleware');
const redirectIfMissingProfileDetailsMiddleware = require('./middlewares/redirectIfMissingProfileDetailsMiddleware');
const redirectHomeIfAuthorized = require('./middlewares/redirectHomeIfAuthorized');
const middlewares = {
redirectIfNotAuthorizedMiddleware,
attachPublicKeyMiddleware,
redirectIfMissingProfileDetailsMiddleware,
redirectHomeIfAuthorized,
};
const WebRoutesProvider = require('./routes/webRoutes'); const WebRoutesProvider = require('./routes/webRoutes');
const webRoutesProvider = new WebRoutesProvider(express); const webRoutesProvider = new WebRoutesProvider({ express, middlewares });
dependencies.webRoutes = webRoutesProvider.provide(); dependencies.webRoutes = webRoutesProvider.provide();
return dependencies; return dependencies;
} }

View file

@ -1,28 +1,28 @@
const redirectIfNotAuthorizedMiddleware = require('../middlewares/redirectIfNotAuthorizedMiddleware');
const invitesService = require('../services/invitesService'); const invitesService = require('../services/invitesService');
const attachPublicKeyMiddleware = require('../middlewares/attachPublicKeyMiddleware');
const redirectIfMissingProfileDetailsMiddleware = require('../middlewares/redirectIfMissingProfileDetailsMiddleware');
const redirectHomeIfAuthorized = require('../middlewares/redirectHomeIfAuthorized');
class WebRoutesProvider { class WebRoutesProvider {
constructor(express) { constructor({ express, middlewares }) {
this.express;
this.router = express.Router(); this.router = express.Router();
this.middlewares = middlewares;
} }
provide() { provide() {
this.router.get( this.router.get(
'/', '/',
redirectHomeIfAuthorized, this.middlewares.redirectHomeIfAuthorized,
redirectIfNotAuthorizedMiddleware, this.middlewares.redirectIfNotAuthorizedMiddleware,
(req, res) => { (req, res) => {
res.redirect('/login'); res.redirect('/login');
} }
); );
this.router.get('/login', redirectHomeIfAuthorized, (req, res) => { this.router.get(
'/login',
this.middlewares.redirectHomeIfAuthorized,
(req, res) => {
res.render('login', { uuid: req.cookies.sessionUuid }); res.render('login', { uuid: req.cookies.sessionUuid });
}); }
);
this.router.get('/invite/:inviteUuid', async (req, res) => { this.router.get('/invite/:inviteUuid', async (req, res) => {
const { inviteUuid } = req.params; const { inviteUuid } = req.params;
@ -56,7 +56,7 @@ class WebRoutesProvider {
this.router.get( this.router.get(
'/createProfile', '/createProfile',
redirectIfNotAuthorizedMiddleware, this.middlewares.redirectIfNotAuthorizedMiddleware,
async (req, res) => { async (req, res) => {
return res.status(200).render('createProfile'); return res.status(200).render('createProfile');
} }
@ -64,9 +64,9 @@ class WebRoutesProvider {
this.router.get( this.router.get(
'/home', '/home',
redirectIfNotAuthorizedMiddleware, this.middlewares.redirectIfNotAuthorizedMiddleware,
attachPublicKeyMiddleware, this.middlewares.attachPublicKeyMiddleware,
redirectIfMissingProfileDetailsMiddleware, this.middlewares.redirectIfMissingProfileDetailsMiddleware,
(req, res) => { (req, res) => {
res.render('home', {}); res.render('home', {});
} }
@ -74,9 +74,9 @@ class WebRoutesProvider {
this.router.get( this.router.get(
'/offers', '/offers',
redirectIfNotAuthorizedMiddleware, this.middlewares.redirectIfNotAuthorizedMiddleware,
attachPublicKeyMiddleware, this.middlewares.attachPublicKeyMiddleware,
redirectIfMissingProfileDetailsMiddleware, this.middlewares.redirectIfMissingProfileDetailsMiddleware,
(req, res) => { (req, res) => {
res.render('offers', {}); res.render('offers', {});
} }