From faa8a31102c5f6d8e517cade6c936ae4e88896b1 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Tue, 29 Jun 2021 00:34:05 -0500 Subject: [PATCH] Route - prevent pre/post middleware from being applied twice --- src/auth/middleware/SessionAuthMiddleware.ts | 5 +++++ src/http/routing/Route.ts | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/auth/middleware/SessionAuthMiddleware.ts b/src/auth/middleware/SessionAuthMiddleware.ts index 146d99e..2f43449 100644 --- a/src/auth/middleware/SessionAuthMiddleware.ts +++ b/src/auth/middleware/SessionAuthMiddleware.ts @@ -7,6 +7,7 @@ import {SessionSecurityContext} from '../contexts/SessionSecurityContext' import {SecurityContext} from '../SecurityContext' import {ORMUserRepository} from '../orm/ORMUserRepository' import {AuthConfig, AuthenticatableRepositories} from '../config' +import {Logging} from '../../service/Logging' /** * Injects a SessionSecurityContext into the request and attempts to @@ -17,7 +18,11 @@ export class SessionAuthMiddleware extends Middleware { @Inject() protected readonly config!: Config + @Inject() + protected readonly logging!: Logging + async apply(): Promise { + this.logging.debug('Applying session auth middleware...') const context = this.make(SessionSecurityContext, this.getRepository()) this.request.registerSingletonInstance(SecurityContext, context) await context.resume() diff --git a/src/http/routing/Route.ts b/src/http/routing/Route.ts index 38442b5..5d7f2f5 100644 --- a/src/http/routing/Route.ts +++ b/src/http/routing/Route.ts @@ -87,11 +87,15 @@ export class Route extends AppClass { for ( const group of stack ) { route.prepend(group.prefix) group.getGroupMiddlewareDefinitions() - .each(def => route.prependMiddleware(def)) + .where('stage', '=', 'pre') + .each(def => { + route.prependMiddleware(def) + }) } for ( const group of this.compiledGroupStack ) { group.getGroupMiddlewareDefinitions() + .where('stage', '=', 'post') .each(def => route.appendMiddleware(def)) }