46 lines
2.4 KiB
TypeScript
46 lines
2.4 KiB
TypeScript
import { Body, Controller, Delete, Get, Inject, Param, Patch, Post } from '@nestjs/common';
|
|
import { ApiTags } from '@nestjs/swagger';
|
|
import { AuditAction } from '../audit/audit.metadata.js';
|
|
import { CurrentUserParam, RequirePermissions, type CurrentUser } from '../security/security.metadata.js';
|
|
import { CustomerGatewayPoliciesService } from './customer-gateway-policies.service.js';
|
|
|
|
@ApiTags('customer-gateway-policies')
|
|
@Controller()
|
|
export class CustomerGatewayPoliciesController {
|
|
constructor(@Inject(CustomerGatewayPoliciesService) private readonly policiesService: CustomerGatewayPoliciesService) {}
|
|
|
|
@Get('customer-gateways/:id/policies')
|
|
@RequirePermissions('customer_gateways.view')
|
|
list(@Param('id') gatewayId: string) {
|
|
return this.policiesService.list(gatewayId);
|
|
}
|
|
|
|
@Post('customer-gateways/:id/policies')
|
|
@RequirePermissions('customer_gateways.manage')
|
|
@AuditAction({ module: 'customer_gateways', action: 'policy_create', objectType: 'customer_gateway', objectIdParam: 'id' })
|
|
create(@Param('id') gatewayId: string, @Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
|
|
return this.policiesService.create(gatewayId, body as never, currentUser?.id);
|
|
}
|
|
|
|
@Patch('customer-gateway-policies/:id')
|
|
@RequirePermissions('customer_gateways.manage')
|
|
@AuditAction({ module: 'customer_gateways', action: 'policy_update', objectType: 'customer_gateway_policy', objectIdParam: 'id' })
|
|
update(@Param('id') policyId: string, @Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
|
|
return this.policiesService.update(policyId, body as never, currentUser?.id);
|
|
}
|
|
|
|
@Delete('customer-gateway-policies/:id')
|
|
@RequirePermissions('customer_gateways.manage')
|
|
@AuditAction({ module: 'customer_gateways', action: 'policy_delete', objectType: 'customer_gateway_policy', objectIdParam: 'id' })
|
|
remove(@Param('id') policyId: string, @CurrentUserParam() currentUser?: CurrentUser) {
|
|
return this.policiesService.remove(policyId, currentUser?.id);
|
|
}
|
|
|
|
@Post('customer-gateways/:id/policies/reorder')
|
|
@RequirePermissions('customer_gateways.manage')
|
|
@AuditAction({ module: 'customer_gateways', action: 'policy_reorder', objectType: 'customer_gateway', objectIdParam: 'id' })
|
|
reorder(@Param('id') gatewayId: string, @Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
|
|
return this.policiesService.reorder(gatewayId, body as never, currentUser?.id);
|
|
}
|
|
}
|