From 2af34a129e5db8d80f2e8e7eae1daaed7a788e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=9E=97?= <1570898673@qq.com> Date: Sun, 27 Apr 2025 21:41:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(resume):=20=E5=A2=9E=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81=E5=92=8C=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在简历模板创建时增加用户权限验证 - 在查询简历时增加用户存在性验证 - 更新相关模块和控制器以支持用户验证 --- .../resume-template.controller.ts | 11 +++++++++-- src/resume-template/resume-template.module.ts | 3 ++- src/resume-template/resume-template.service.ts | 16 +++++++++++++++- src/resume/resume.controller.ts | 8 ++++++-- src/resume/resume.service.ts | 14 +++++++++++++- 5 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/resume-template/resume-template.controller.ts b/src/resume-template/resume-template.controller.ts index 97781f5..04b8bbd 100644 --- a/src/resume-template/resume-template.controller.ts +++ b/src/resume-template/resume-template.controller.ts @@ -8,6 +8,7 @@ import { Delete, UseGuards, Query, + Request, } from '@nestjs/common'; import { ResumeTemplateService } from './resume-template.service'; import { CreateResumeTemplateDto } from './dto/create-resume-template.dto'; @@ -35,8 +36,14 @@ export class ResumeTemplateController { */ @Post() @UseGuards(AuthGuard) - create(@Body() createResumeTemplateDto: CreateResumeTemplateDto) { - return this.resumeTemplateService.create(createResumeTemplateDto); + create( + @Body() createResumeTemplateDto: CreateResumeTemplateDto, + @Request() req, + ) { + return this.resumeTemplateService.create( + createResumeTemplateDto, + req.user.sub, + ); } /** diff --git a/src/resume-template/resume-template.module.ts b/src/resume-template/resume-template.module.ts index 8289688..87cbe02 100644 --- a/src/resume-template/resume-template.module.ts +++ b/src/resume-template/resume-template.module.ts @@ -3,9 +3,10 @@ import { ResumeTemplateService } from './resume-template.service'; import { ResumeTemplateController } from './resume-template.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ResumeTemplateEntity } from './entities/resume-template.entity'; +import { UserEntity } from '../usercenter/entities/usercenter.entity'; @Module({ - imports: [TypeOrmModule.forFeature([ResumeTemplateEntity])], + imports: [TypeOrmModule.forFeature([ResumeTemplateEntity, UserEntity])], controllers: [ResumeTemplateController], providers: [ResumeTemplateService], exports: [ResumeTemplateService], diff --git a/src/resume-template/resume-template.service.ts b/src/resume-template/resume-template.service.ts index cad3b40..b501485 100644 --- a/src/resume-template/resume-template.service.ts +++ b/src/resume-template/resume-template.service.ts @@ -4,6 +4,7 @@ import { Repository } from 'typeorm'; import { ResumeTemplateEntity } from './entities/resume-template.entity'; import { CreateResumeTemplateDto } from './dto/create-resume-template.dto'; import { UpdateResumeTemplateDto } from './dto/update-resume-template.dto'; +import { UserEntity } from '../usercenter/entities/usercenter.entity'; @Injectable() export class ResumeTemplateService { @@ -14,6 +15,8 @@ export class ResumeTemplateService { constructor( @InjectRepository(ResumeTemplateEntity) private readonly resumeTemplateRepository: Repository, + @InjectRepository(UserEntity) + private readonly userRepository: Repository, ) {} /** @@ -21,7 +24,18 @@ export class ResumeTemplateService { * @param createResumeTemplateDto - 创建简历模板的请求体 * @returns 返回创建的简历模板的信息 */ - async create(createResumeTemplateDto: CreateResumeTemplateDto) { + async create(createResumeTemplateDto: CreateResumeTemplateDto, id: number) { + // 检查用户是否存在 + const user = await this.userRepository.findOne({ + where: { userId: id }, + }); + console.log('user', user); + if (!user) { + throw new NotFoundException(`用户ID ${id} 不存在`); + } + if (user.userAuth !== 2) { + throw new NotFoundException(`用户无权限创建简历模板`); + } const ResumeTemplate = this.resumeTemplateRepository.create({ ...createResumeTemplateDto, }); diff --git a/src/resume/resume.controller.ts b/src/resume/resume.controller.ts index a13388f..dd00d1e 100644 --- a/src/resume/resume.controller.ts +++ b/src/resume/resume.controller.ts @@ -56,8 +56,12 @@ export class ResumeController { */ @Get() @UseGuards(AuthGuard) - findAll(@Query('page') page?: number, @Query('limit') limit?: number) { - return this.resumeService.findAll({ + findAll( + @Request() req, + @Query('page') page?: number, + @Query('limit') limit?: number, + ) { + return this.resumeService.findAll(req.user.sub, { page, limit, }); diff --git a/src/resume/resume.service.ts b/src/resume/resume.service.ts index a54a52f..9490a7f 100644 --- a/src/resume/resume.service.ts +++ b/src/resume/resume.service.ts @@ -48,12 +48,24 @@ export class ResumeService { * @param query - 查询参数,包含分页信息 * @returns 返回所有简历信息和总数 */ - async findAll(query: { page?: number; limit?: number }) { + async findAll( + resumeUserId: number, + query: { page?: number; limit?: number }, + ) { + // 获取用户信息 + const user = await this.userRepository.findOne({ + where: { userId: resumeUserId }, + }); + if (!user) { + throw new NotFoundException('用户不存在'); + } const { page = 1, limit = 10 } = query; const [items, total] = await this.resumeRepository.findAndCount({ + where: { resumeUserId }, skip: (page - 1) * limit, take: limit, }); + console.log('items', items); return { items, total,