diff --git a/src/app/api/notary/OfficeFolderAnchorsController.ts b/src/app/api/notary/OfficeFolderAnchorsController.ts index 62c9d3d7..3a43a703 100644 --- a/src/app/api/notary/OfficeFolderAnchorsController.ts +++ b/src/app/api/notary/OfficeFolderAnchorsController.ts @@ -2,7 +2,7 @@ import { Response, Request } from "express"; import { Controller, Get, Post } from "@ControllerPattern/index"; import ApiController from "@Common/system/controller-pattern/ApiController"; import { Service } from "typedi"; -import { OfficeFolder } from "le-coffre-resources/dist/Notary"; +import { Document, OfficeFolder } from "le-coffre-resources/dist/Notary"; import { getFolderHashes } from "@Common/optics/notary"; import OfficeFoldersService from "@Services/notary/OfficeFoldersService/OfficeFoldersService"; import OfficeFolderAnchorsRepository from "@Repositories/OfficeFolderAnchorsRepository"; @@ -136,6 +136,18 @@ export default class OfficeFoldersController extends ApiController { const officeFolder = OfficeFolder.hydrate(officeFolderFound, { strategy: "excludeAll" }); + // Check if every document is validated in a folder + const documents = officeFolder.documents ?? []; + const documentsValidated = documents.filter((document) => { + let documentHydrated = Document.hydrate(document, { strategy: "excludeAll" }); + return documentHydrated.document_status === "VALIDATED"; + }); + + if (documentsValidated.length !== documents.length && documents.length !== 0) { + this.httpBadRequest(response, "Cannot anchor a folder with non validated documents"); + return; + } + const folderHashes = getFolderHashes(officeFolder); if (folderHashes.length === 0) { diff --git a/src/app/api/super-admin/UsersController.ts b/src/app/api/super-admin/UsersController.ts index bacb7850..a4a63b51 100644 --- a/src/app/api/super-admin/UsersController.ts +++ b/src/app/api/super-admin/UsersController.ts @@ -128,11 +128,10 @@ export default class UsersController extends ApiController { return; } - // Not needed if you're super admin you can assign every roles from every offices - // if (officeRole.office_uid != userFound.office_uid) { - // this.httpBadRequest(response, "Cannot assign an office role from another office"); - // return; - // } + if (officeRole.office_uid != userFound.office_uid) { + this.httpBadRequest(response, "Cannot assign an office role from another office"); + return; + } } //call service to get prisma entity