Skip to content

Commit 371f7b1

Browse files
committed
/person-token endpoints bypass person token interceptor
1 parent e22e624 commit 371f7b1

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

src/interceptors/person-token.interceptor.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@ import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from "@nes
22
import { Observable } from "rxjs";
33
import { PersonsService } from "src/persons/persons.service";
44
import { Request } from "express";
5+
import { Reflector } from "@nestjs/core";
56

67
/** Extracts a person from the request, if the request has a `personToken` in the query params or the path params. */
78
@Injectable()
89
export class PersonTokenInterceptor implements NestInterceptor {
9-
constructor(private personsService: PersonsService) {}
10+
11+
constructor(private personsService: PersonsService, private reflector: Reflector) {}
1012

1113
async intercept(context: ExecutionContext, next: CallHandler): Promise<Observable<any>> {
1214
const request = context.switchToHttp().getRequest<Request>();
15+
const bypass = this.reflector.get<boolean>("BypassPersonTokenInterceptor", context.getHandler());
16+
if (bypass) {
17+
return next.handle();
18+
}
1319
const personToken = request.params.personToken || request.query.personToken;
1420
if (personToken && typeof personToken === "string") {
1521
(request as any).person = await this.personsService.getByToken(personToken);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { SetMetadata } from "@nestjs/common";
2+
3+
export const BypassPersonTokenInterceptor = () => SetMetadata("BypassPersonTokenInterceptor", true);

src/person-token/person-token.controller.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Delete, Get, Param } from "@nestjs/common";
22
import { ApiTags } from "@nestjs/swagger";
33
import { PersonTokenService } from "./person-token.service";
44
import { LajiApiController } from "src/decorators/laji-api-controller.decorator";
5+
import { BypassPersonTokenInterceptor } from "./bypass-person-token-interceptor.decorator";
56

67
@LajiApiController("person-token")
78
@ApiTags("Person token")
@@ -13,6 +14,7 @@ export class PersonTokenController {
1314
* Returns information about the token
1415
*/
1516
@Get(":personToken")
17+
@BypassPersonTokenInterceptor()
1618
getInfo(@Param("personToken") personToken: string) {
1719
return this.personTokenService.getInfo(personToken);
1820
}
@@ -21,6 +23,7 @@ export class PersonTokenController {
2123
* Deletes the token
2224
*/
2325
@Delete(":personToken")
26+
@BypassPersonTokenInterceptor()
2427
delete(@Param("personToken") personToken: string) {
2528
return this.personTokenService.delete(personToken);
2629
}

0 commit comments

Comments
 (0)