From dea5f8c48b8c8a8472a17607c4fae91d87dd4810 Mon Sep 17 00:00:00 2001 From: Mathis Date: Mon, 15 Jul 2024 11:41:39 +0200 Subject: [PATCH] feat(auth): use reflector for service injection in guards The commit refactors how services are injected in UserGuard and AdminGuard inside the auth module. By leveraging the Reflector class from NestJS, it improves the ability to retrieve metadata about these guards, potentially aiding in debugging and understanding code flow. --- src/auth/auth.guard.ts | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/auth/auth.guard.ts b/src/auth/auth.guard.ts index 20201f9..defebc3 100644 --- a/src/auth/auth.guard.ts +++ b/src/auth/auth.guard.ts @@ -4,13 +4,18 @@ import { CredentialsService } from "src/credentials/credentials.service"; import { DrizzleService } from "src/drizzle/drizzle.service"; import { UsersTable } from "src/schema"; import { eq } from "drizzle-orm"; +import { Reflector } from "@nestjs/core"; @Injectable() export class UserGuard implements CanActivate { - constructor( - private readonly credentialService: CredentialsService, - private readonly databaseService: DrizzleService - ) {} + private readonly credentialService: CredentialsService; + private readonly databaseService: DrizzleService; + + constructor() { + const reflector = new Reflector(); + this.credentialService = reflector.get('CredentialsService', UserGuard); + this.databaseService = reflector.get('DrizzleService', UserGuard); + } async canActivate( context: ExecutionContext, @@ -44,10 +49,14 @@ export class UserGuard implements CanActivate { @Injectable() export class AdminGuard implements CanActivate { - constructor( - private readonly credentialService: CredentialsService, - private readonly databaseService: DrizzleService - ) {} + private readonly credentialService: CredentialsService; + private readonly databaseService: DrizzleService; + + constructor() { + const reflector = new Reflector(); + this.credentialService = reflector.get('CredentialsService', UserGuard); + this.databaseService = reflector.get('DrizzleService', UserGuard); + } async canActivate( context: ExecutionContext,