fix(comment): Create proper DTO class for comment creation

- Create CreateCommentDto class with proper validation decorators
- Update comment controller to use the DTO for request body
- This resolves the global ValidationPipe rejection due to forbidNonWhitelisted
- Set MaxLength to 50000 to match manual validation logic

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
kevin-asprec
2026-05-06 17:38:48 +08:00
parent 59ee1fbe33
commit da9707f3fb
2 changed files with 21 additions and 4 deletions

View File

@@ -7,6 +7,7 @@ import {
UseGuards,
UseInterceptors,
UploadedFiles,
BadRequestException,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { FileFieldsInterceptor } from '@nestjs/platform-express';
@@ -38,14 +39,18 @@ export class CommentController {
async create(
@CurrentUser() user: CurrentUserPayload,
@Param('ticketId') ticketId: string,
@Body() dto: CreateCommentDto,
@Body() body: CreateCommentDto,
@UploadedFiles() files?: { files?: Express.Multer.File[] },
) {
const content = body.content;
if (!content || content.length > 50000) {
throw new BadRequestException('Content must be between 1 and 50000 characters');
}
return this.commentService.create(
user.tenantId,
ticketId,
user.sub,
dto.content,
content,
files?.files,
);
}

View File

@@ -1,7 +1,19 @@
import { IsString, MinLength } from 'class-validator';
import {
IsString,
IsOptional,
IsArray,
MinLength,
MaxLength,
} from 'class-validator';
export class CreateCommentDto {
@IsString()
@MinLength(1)
content!: string;
@MaxLength(50000)
content: string;
@IsOptional()
@IsArray()
@IsString({ each: true })
files?: string[];
}