diff --git a/src/modules/cards/use-cases/delete-card-by-id-use-case.ts b/src/modules/cards/use-cases/delete-card-by-id-use-case.ts index 96ca3c6..4d7b81b 100644 --- a/src/modules/cards/use-cases/delete-card-by-id-use-case.ts +++ b/src/modules/cards/use-cases/delete-card-by-id-use-case.ts @@ -1,4 +1,4 @@ -import { BadRequestException, NotFoundException } from '@nestjs/common' +import { ForbiddenException, NotFoundException } from '@nestjs/common' import { CommandHandler, ICommandHandler } from '@nestjs/cqrs' import { CardsRepository } from '../infrastructure/cards.repository' @@ -16,7 +16,7 @@ export class DeleteCardByIdHandler implements ICommandHandler { if (!card) throw new NotFoundException(`Card with id ${command.cardId} not found`) if (card.userId !== command.userId) { - throw new BadRequestException(`You can't change a card that you don't own`) + throw new ForbiddenException(`You can't change a card that you don't own`) } let questionImg, answerImg diff --git a/src/modules/decks/use-cases/create-card-use-case.ts b/src/modules/decks/use-cases/create-card-use-case.ts index 9626c46..8029022 100644 --- a/src/modules/decks/use-cases/create-card-use-case.ts +++ b/src/modules/decks/use-cases/create-card-use-case.ts @@ -1,9 +1,11 @@ +import { ForbiddenException } from '@nestjs/common' import { CommandHandler, ICommandHandler } from '@nestjs/cqrs' import { FileUploadService } from '../../../infrastructure/file-upload-service/file-upload.service' import { CreateCardDto } from '../../cards/dto' import { Card } from '../../cards/entities/cards.entity' import { CardsRepository } from '../../cards/infrastructure/cards.repository' +import { DecksRepository } from '../infrastructure/decks.repository' export class CreateCardCommand { constructor( @@ -19,12 +21,19 @@ export class CreateCardCommand { export class CreateCardHandler implements ICommandHandler { constructor( private readonly cardsRepository: CardsRepository, + private readonly decksRepository: DecksRepository, private readonly fileUploadService: FileUploadService ) {} async execute(command: CreateCardCommand): Promise { let questionImg, answerImg + const deck = await this.decksRepository.findDeckById(command.deckId) + + if (deck.userId !== command.userId) { + throw new ForbiddenException(`You can't create cards in a deck that you don't own`) + } + if (command.questionImg && command.answerImg) { const addQuestionImagePromise = this.fileUploadService.uploadFile( command.questionImg?.buffer,