11import { AuthContext , OrganizationId } from '@/auth/auth-context.decorator' ;
22import { HybridAuthGuard } from '@/auth/hybrid-auth.guard' ;
3+ import { PermissionGuard } from '@/auth/permission.guard' ;
4+ import { RequirePermission } from '@/auth/require-permission.decorator' ;
35import type { AuthContext as AuthContextType } from '@/auth/types' ;
6+ import { AuditRead } from '@/audit/skip-audit-log.decorator' ;
47import {
58 Body ,
69 Controller ,
@@ -19,7 +22,7 @@ import { EvidenceFormsService } from './evidence-forms.service';
1922
2023@ApiTags ( 'Evidence Forms' )
2124@Controller ( { path : 'evidence-forms' , version : '1' } )
22- @UseGuards ( HybridAuthGuard )
25+ @UseGuards ( HybridAuthGuard , PermissionGuard )
2326@ApiSecurity ( 'apikey' )
2427@ApiHeader ( {
2528 name : 'X-Organization-Id' ,
@@ -31,6 +34,7 @@ export class EvidenceFormsController {
3134 constructor ( private readonly evidenceFormsService : EvidenceFormsService ) { }
3235
3336 @Get ( )
37+ @RequirePermission ( 'evidence' , 'read' )
3438 @ApiOperation ( {
3539 summary : 'List evidence forms' ,
3640 description : 'List all available pre-built evidence forms' ,
@@ -40,6 +44,7 @@ export class EvidenceFormsController {
4044 }
4145
4246 @Get ( 'statuses' )
47+ @RequirePermission ( 'evidence' , 'read' )
4348 @ApiOperation ( {
4449 summary : 'Get submission statuses for all forms' ,
4550 description :
@@ -50,6 +55,7 @@ export class EvidenceFormsController {
5055 }
5156
5257 @Get ( 'my-submissions' )
58+ @RequirePermission ( 'evidence' , 'read' )
5359 @ApiOperation ( {
5460 summary : 'Get current user submissions' ,
5561 description :
@@ -68,6 +74,7 @@ export class EvidenceFormsController {
6874 }
6975
7076 @Get ( 'my-submissions/pending-count' )
77+ @RequirePermission ( 'evidence' , 'read' )
7178 @ApiOperation ( {
7279 summary : 'Get pending submission count for current user' ,
7380 description :
@@ -84,6 +91,7 @@ export class EvidenceFormsController {
8491 }
8592
8693 @Get ( ':formType' )
94+ @RequirePermission ( 'evidence' , 'read' )
8795 @ApiOperation ( {
8896 summary : 'Get form definition and submissions' ,
8997 description :
@@ -108,6 +116,7 @@ export class EvidenceFormsController {
108116 }
109117
110118 @Get ( ':formType/submissions/:submissionId' )
119+ @RequirePermission ( 'evidence' , 'read' )
111120 @ApiOperation ( {
112121 summary : 'Get a single submission' ,
113122 description :
@@ -128,6 +137,7 @@ export class EvidenceFormsController {
128137 }
129138
130139 @Post ( ':formType/submissions' )
140+ @RequirePermission ( 'evidence' , 'create' )
131141 @ApiOperation ( {
132142 summary : 'Submit evidence form entry' ,
133143 description :
@@ -148,6 +158,7 @@ export class EvidenceFormsController {
148158 }
149159
150160 @Patch ( ':formType/submissions/:submissionId/review' )
161+ @RequirePermission ( 'evidence' , 'update' )
151162 @ApiOperation ( {
152163 summary : 'Review a submission' ,
153164 description :
@@ -170,6 +181,7 @@ export class EvidenceFormsController {
170181 }
171182
172183 @Post ( 'uploads' )
184+ @RequirePermission ( 'evidence' , 'create' )
173185 @ApiOperation ( {
174186 summary : 'Upload evidence form file' ,
175187 description :
@@ -188,6 +200,8 @@ export class EvidenceFormsController {
188200 }
189201
190202 @Get ( ':formType/export.csv' )
203+ @RequirePermission ( 'evidence' , 'read' )
204+ @AuditRead ( )
191205 @ApiOperation ( {
192206 summary : 'Export form submissions to CSV' ,
193207 description : 'Export all form submissions for an organization as CSV' ,
0 commit comments