From a56e4be2000853728cf503ee26b95dfc3c55a169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E7=A7=8B=E6=97=AD?= Date: Fri, 17 Feb 2023 16:13:04 +0800 Subject: [PATCH] add password.interceptor --- .../interceptors/password.interceptor.ts | 22 +++++++++++++++++++ src/users/users.controller.ts | 4 +++- src/users/users.service.ts | 1 - 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/common/interceptors/password.interceptor.ts diff --git a/src/common/interceptors/password.interceptor.ts b/src/common/interceptors/password.interceptor.ts new file mode 100644 index 0000000..2251d01 --- /dev/null +++ b/src/common/interceptors/password.interceptor.ts @@ -0,0 +1,22 @@ +import { + CallHandler, + ExecutionContext, + Injectable, + NestInterceptor, +} from '@nestjs/common' +import { map, Observable } from 'rxjs' +import { UserEntity } from 'src/users/entities/user.entity' + +@Injectable() +export class PasswordInterceptor implements NestInterceptor { + intercept(context: ExecutionContext, next: CallHandler): Observable { + return next.handle().pipe( + map((user: UserEntity) => { + if ('password' in user) { + user.password = '' + } + return user + }), + ) + } +} diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index e72b5ac..251b7a8 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -1,14 +1,16 @@ -import { Controller, Get } from '@nestjs/common' +import { Controller, Get, UseInterceptors } from '@nestjs/common' import { UsersService } from './users.service' import { ApiTags } from '@nestjs/swagger' import { User } from 'src/common/decorators/user.decorator' import { NeedAuth } from 'src/common/decorators/need-auth.decorator' +import { PasswordInterceptor } from 'src/common/interceptors/password.interceptor' @ApiTags('User') @Controller('api/user') export class UsersController { constructor(private readonly userService: UsersService) {} + @UseInterceptors(PasswordInterceptor) @NeedAuth() @Get('profile') async getUserInfo(@User('userId') userId: string) { diff --git a/src/users/users.service.ts b/src/users/users.service.ts index f8c5dda..6699b29 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -32,7 +32,6 @@ export class UsersService { password: hashedPassword, }, }) - delete user.password return user } }