mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-23 08:10:32 +00:00
Add AuthorizationGuard and PermissionGuard to the following controllers: - CreditNoteRefundsController - CreditNotesApplyInvoiceController - VendorCreditApplyBillsController - VendorCreditsRefundController Add @RequirePermission decorators with appropriate actions: - View action for GET endpoints - Edit action for POST/DELETE endpoints - Refund action for refund-related operations Also fixes AuthorizationGuard to use userId from clsService instead of user.id from request for consistency with the abilities cache.
57 lines
2.2 KiB
TypeScript
57 lines
2.2 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Get,
|
|
Param,
|
|
Post,
|
|
UseGuards,
|
|
} from '@nestjs/common';
|
|
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
|
import { GetCreditNoteAssociatedAppliedInvoices } from './queries/GetCreditNoteAssociatedAppliedInvoices.service';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
import { RequirePermission } from '@/modules/Roles/RequirePermission.decorator';
|
|
import { PermissionGuard } from '@/modules/Roles/Permission.guard';
|
|
import { AuthorizationGuard } from '@/modules/Roles/Authorization.guard';
|
|
import { AbilitySubject } from '@/modules/Roles/Roles.types';
|
|
import { CreditNoteAction } from '../CreditNotes/types/CreditNotes.types';
|
|
|
|
@Controller('credit-notes')
|
|
@ApiTags('Credit Notes Apply Invoice')
|
|
@ApiCommonHeaders()
|
|
@UseGuards(AuthorizationGuard, PermissionGuard)
|
|
export class CreditNotesApplyInvoiceController {
|
|
constructor(
|
|
private readonly getCreditNoteAssociatedAppliedInvoicesService: GetCreditNoteAssociatedAppliedInvoices,
|
|
) {}
|
|
|
|
@Get(':creditNoteId/applied-invoices')
|
|
@RequirePermission(CreditNoteAction.View, AbilitySubject.CreditNote)
|
|
@ApiOperation({ summary: 'Applied credit note to invoices' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'Credit note successfully applied to invoices',
|
|
})
|
|
@ApiResponse({ status: 404, description: 'Credit note not found' })
|
|
@ApiResponse({ status: 400, description: 'Invalid input data' })
|
|
appliedCreditNoteToInvoices(@Param('creditNoteId') creditNoteId: number) {
|
|
return this.getCreditNoteAssociatedAppliedInvoicesService.getCreditAssociatedAppliedInvoices(
|
|
creditNoteId,
|
|
);
|
|
}
|
|
|
|
@Post(':creditNoteId/apply-invoices')
|
|
@RequirePermission(CreditNoteAction.Edit, AbilitySubject.CreditNote)
|
|
@ApiOperation({ summary: 'Apply credit note to invoices' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'Credit note successfully applied to invoices',
|
|
})
|
|
@ApiResponse({ status: 404, description: 'Credit note not found' })
|
|
@ApiResponse({ status: 400, description: 'Invalid input data' })
|
|
applyCreditNoteToInvoices(@Param('creditNoteId') creditNoteId: number) {
|
|
return this.getCreditNoteAssociatedAppliedInvoicesService.getCreditAssociatedAppliedInvoices(
|
|
creditNoteId,
|
|
);
|
|
}
|
|
}
|