From 1a768fedccaa0ac0121e3fc6e5d62823fc1b471e Mon Sep 17 00:00:00 2001 From: Gerald Schmittinger Date: Tue, 13 May 2025 01:02:53 +0200 Subject: [PATCH] fix(backend): Bugs omtrent leerpad-endpoints opgelost --- backend/src/data/content/learning-object-repository.ts | 2 +- backend/src/data/content/learning-path-repository.ts | 4 +--- backend/src/entities/content/learning-object.entity.ts | 2 ++ .../middleware/auth/checks/learning-object-auth-checks.ts | 2 +- .../middleware/auth/checks/learning-path-auth-checks.ts | 6 +++--- .../learning-object-zip-processing-service.ts | 8 ++++---- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/backend/src/data/content/learning-object-repository.ts b/backend/src/data/content/learning-object-repository.ts index 889370d5..a862bfc2 100644 --- a/backend/src/data/content/learning-object-repository.ts +++ b/backend/src/data/content/learning-object-repository.ts @@ -12,7 +12,7 @@ export class LearningObjectRepository extends DwengoEntityRepository return this.findAll({ where: { admins: { - $contains: { - username: adminUsername - } + username: adminUsername } } }); diff --git a/backend/src/entities/content/learning-object.entity.ts b/backend/src/entities/content/learning-object.entity.ts index 825bf744..59593c9a 100644 --- a/backend/src/entities/content/learning-object.entity.ts +++ b/backend/src/entities/content/learning-object.entity.ts @@ -1,5 +1,6 @@ import { ArrayType, + Cascade, Collection, Embedded, Entity, @@ -93,6 +94,7 @@ export class LearningObject { @OneToMany({ entity: () => Attachment, mappedBy: 'learningObject', + cascade: [Cascade.ALL] }) attachments: Collection = new Collection(this); diff --git a/backend/src/middleware/auth/checks/learning-object-auth-checks.ts b/backend/src/middleware/auth/checks/learning-object-auth-checks.ts index 31387198..7ef91947 100644 --- a/backend/src/middleware/auth/checks/learning-object-auth-checks.ts +++ b/backend/src/middleware/auth/checks/learning-object-auth-checks.ts @@ -12,5 +12,5 @@ export const onlyAdminsForLearningObject = authorize(async (auth: Authentication language: language as Language, version: parseInt(version as string) }); - return auth.username in admins; + return admins.includes(auth.username); }); diff --git a/backend/src/middleware/auth/checks/learning-path-auth-checks.ts b/backend/src/middleware/auth/checks/learning-path-auth-checks.ts index 6c73e22e..64e51416 100644 --- a/backend/src/middleware/auth/checks/learning-path-auth-checks.ts +++ b/backend/src/middleware/auth/checks/learning-path-auth-checks.ts @@ -3,10 +3,10 @@ import { authorize } from "../auth"; import { AuthenticatedRequest } from "../authenticated-request"; import { AuthenticationInfo } from "../authentication-info"; -export const onlyAdminsForLearningPath = authorize((auth: AuthenticationInfo, req: AuthenticatedRequest) => { - const adminsForLearningPath = learningPathService.getAdmins({ +export const onlyAdminsForLearningPath = authorize(async (auth: AuthenticationInfo, req: AuthenticatedRequest) => { + const adminsForLearningPath = await learningPathService.getAdmins({ hruid: req.body.hruid, language: req.body.language }); - return adminsForLearningPath && auth.username in adminsForLearningPath; + return adminsForLearningPath && adminsForLearningPath.includes(auth.username); }); diff --git a/backend/src/services/learning-objects/learning-object-zip-processing-service.ts b/backend/src/services/learning-objects/learning-object-zip-processing-service.ts index 213c3f17..a502aecd 100644 --- a/backend/src/services/learning-objects/learning-object-zip-processing-service.ts +++ b/backend/src/services/learning-objects/learning-object-zip-processing-service.ts @@ -18,7 +18,7 @@ export async function processLearningObjectZip(filePath: string): Promise