fix: skip throttler guard if authed

Signed-off-by: Innei <i@innei.in>
This commit is contained in:
Innei
2024-02-05 17:05:40 +08:00
parent 284f050c1a
commit 0dbe9c25d6
2 changed files with 20 additions and 2 deletions

View File

@@ -8,12 +8,12 @@ import type {
import { Module } from '@nestjs/common'
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core'
import { ThrottlerGuard } from '@nestjs/throttler'
import { DEMO_MODE } from './app.config'
import { AppController } from './app.controller'
import { AllExceptionsFilter } from './common/filters/any-exception.filter'
import { RolesGuard } from './common/guards/roles.guard'
import { ExtendThrottlerGuard } from './common/guards/throttler.guard'
import { AnalyzeInterceptor } from './common/interceptors/analyze.interceptor'
import { HttpCacheInterceptor } from './common/interceptors/cache.interceptor'
import { DbQueryInterceptor } from './common/interceptors/db-query.interceptor'
@@ -159,7 +159,7 @@ import { RedisModule } from './processors/redis/redis.module'
},
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
useClass: ExtendThrottlerGuard,
},
],
})

View File

@@ -0,0 +1,18 @@
import type { ExecutionContext } from '@nestjs/common'
import { Injectable } from '@nestjs/common'
import { ThrottlerGuard } from '@nestjs/throttler'
import { getNestExecutionContextRequest } from '~/transformers/get-req.transformer'
@Injectable()
export class ExtendThrottlerGuard extends ThrottlerGuard {
async canActivate(context: ExecutionContext): Promise<boolean> {
const req = getNestExecutionContextRequest(context)
if (req.user) {
return true
}
return super.canActivate(context)
}
}