From 9f3a5b6fd7063d39802f5f749dda5895e9f823e3 Mon Sep 17 00:00:00 2001 From: magdo Date: Thu, 30 Oct 2025 19:39:41 +0100 Subject: [PATCH] game workflow corrected --- .../src/Application/DTOs/Mappers/DeckMapper.ts | 4 ++-- .../src/Domain/Deck/DeckAggregate.ts | 14 ++++++++++---- .../src/Domain/User/UserAggregate.ts | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts index 25d276c0..87946870 100644 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts +++ b/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts @@ -13,7 +13,7 @@ export class DeckMapper { cardCount: deck.cards.length, creator: deck.user?.username || 'Unknown', creationdate: deck.creationdate, - editable: deck.isEditable() ? deck.isEditable()(userId!) : undefined + editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined }; } @@ -40,7 +40,7 @@ export class DeckMapper { cardCount: deck.cards.length, creator: deck.user?.username || 'Unknown', creationdate: deck.creationdate, - editable: deck.isEditable() ? deck.isEditable()(userId!) : undefined + editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined })); } } diff --git a/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts b/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts index 21537dac..a9b7faec 100644 --- a/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts +++ b/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts @@ -88,10 +88,16 @@ export class DeckAggregate { @JoinColumn({ name: 'user_id' }) user!: UserAggregate | null; - isEditable() { + isEditable(userId:string): boolean{ // A deck is editable if the user is the creator - return (userId: string) => { - return this.user?.id.toString() === userId; - }; + if (!this.user) { + logError(`DeckAggregate.isEditable: User is null for deck id ${this.id}`); + return false; + } + //if admin, always editable + if (this.user?.isAdmin) { + return true; + } + return this.user?.id.toString() === userId;; } } \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/User/UserAggregate.ts b/SerpentRace_Backend/src/Domain/User/UserAggregate.ts index 86bd8b7d..f67fefcf 100644 --- a/SerpentRace_Backend/src/Domain/User/UserAggregate.ts +++ b/SerpentRace_Backend/src/Domain/User/UserAggregate.ts @@ -55,4 +55,8 @@ export class UserAggregate { @Column({ type: 'timestamp', nullable: true }) Orglogindate!: Date | null; + + get isAdmin(): boolean { + return this.state === UserState.ADMIN; + } } \ No newline at end of file