import { Body, Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { CurrentUser } from '../auth/decorators/current-user.decorator'; import { BugReportsService } from './bug-reports.service'; import { BugReportDto } from './dto/bug-report.dto'; /** * POST /bug-reports — Fehler-melden-Knopf (quick-260914-m97). * * Offen fuer ALLE angemeldeten Rollen: bewusst KEIN Rollen-Dekorator * (Muster `user.controller.ts`, Selbstbedienungs-Avatar — `RolesGuard` * laesst bei leerer Rollenliste durch, der globale `JwtAuthGuard` verlangt * weiterhin eine Sitzung). * * Multipart mit Groessenlimit JE ROUTE (T-M97-03): `FileInterceptor` nimmt * genau eine Datei `screenshot` bis 4 MiB entgegen; multers * `LIMIT_FILE_SIZE` wird von Nest auf 413 abgebildet. `main.ts` bleibt * ohne globales Body-Limit. * * Mandant und Benutzer kommen NUR aus dem Sitzungsnachweis * (`@CurrentUser()`), nie aus dem Rumpf (T-M97-06) — das DTO kennt keine * solchen Felder, die globale Pipe entfernt Fremdfelder. */ @Controller('bug-reports') export class BugReportsController { constructor(private readonly service: BugReportsService) {} @Post() @UseInterceptors( FileInterceptor('screenshot', { limits: { fileSize: 4 * 1024 * 1024, files: 1 } }), ) async submit( @CurrentUser() user: any, @Body() dto: BugReportDto, @UploadedFile() file?: any, ) { return this.service.submit(user, dto, file); } }