@webiny/api-aco 6.0.0-beta.0 → 6.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -28
- package/constants.d.ts +2 -0
- package/constants.js +4 -0
- package/constants.js.map +1 -0
- package/createAcoContext.d.ts +4 -2
- package/createAcoContext.js +103 -168
- package/createAcoContext.js.map +1 -1
- package/createAcoGraphQL.d.ts +3 -2
- package/createAcoGraphQL.js +46 -60
- package/createAcoGraphQL.js.map +1 -1
- package/createAcoStorageOperations.d.ts +8 -5
- package/createAcoStorageOperations.js +5 -17
- package/createAcoStorageOperations.js.map +1 -1
- package/createAcoTasks.d.ts +1 -0
- package/createAcoTasks.js +15 -0
- package/createAcoTasks.js.map +1 -0
- package/domain/folder/abstractions.d.ts +9 -0
- package/domain/folder/abstractions.js +8 -0
- package/domain/folder/abstractions.js.map +1 -0
- package/domain/folder/errors.d.ts +29 -0
- package/domain/folder/errors.js +56 -0
- package/domain/folder/errors.js.map +1 -0
- package/domain/folder/folder.model.d.ts +9 -0
- package/domain/folder/folder.model.js +42 -0
- package/domain/folder/folder.model.js.map +1 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js +43 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js +36 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +43 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +45 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +41 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.js +41 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +45 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +44 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js +35 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.d.ts +15 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js +63 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +15 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +43 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/feature.d.ts +1 -0
- package/features/cms/feature.js +43 -0
- package/features/cms/feature.js.map +1 -0
- package/features/cms/index.d.ts +1 -0
- package/features/cms/index.js +3 -0
- package/features/cms/index.js.map +1 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.d.ts +8 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.js +41 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -0
- package/features/flp/CreateFlp/abstractions.d.ts +8 -0
- package/features/flp/CreateFlp/abstractions.js +7 -0
- package/features/flp/CreateFlp/abstractions.js.map +1 -0
- package/features/flp/CreateFlp/feature.d.ts +6 -0
- package/features/flp/CreateFlp/feature.js +13 -0
- package/features/flp/CreateFlp/feature.js.map +1 -0
- package/features/flp/CreateFlp/index.d.ts +2 -0
- package/features/flp/CreateFlp/index.js +4 -0
- package/features/flp/CreateFlp/index.js.map +1 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.d.ts +14 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +37 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.d.ts +1 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.js +10 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -0
- package/features/flp/CreateFlpOnFolderCreated/index.d.ts +1 -0
- package/features/flp/CreateFlpOnFolderCreated/index.js +3 -0
- package/features/flp/CreateFlpOnFolderCreated/index.js.map +1 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.d.ts +8 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js +23 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -0
- package/features/flp/DeleteFlp/abstractions.d.ts +8 -0
- package/features/flp/DeleteFlp/abstractions.js +7 -0
- package/features/flp/DeleteFlp/abstractions.js.map +1 -0
- package/features/flp/DeleteFlp/feature.d.ts +6 -0
- package/features/flp/DeleteFlp/feature.js +13 -0
- package/features/flp/DeleteFlp/feature.js.map +1 -0
- package/features/flp/DeleteFlp/index.d.ts +2 -0
- package/features/flp/DeleteFlp/index.js +4 -0
- package/features/flp/DeleteFlp/index.js.map +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.d.ts +14 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +37 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.d.ts +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js +10 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/index.d.ts +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/index.js +3 -0
- package/features/flp/DeleteFlpOnFolderDeleted/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +35 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +133 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/abstractions.d.ts +25 -0
- package/features/flp/FolderLevelPermissions/abstractions.js +4 -0
- package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/feature.d.ts +1 -0
- package/features/flp/FolderLevelPermissions/feature.js +10 -0
- package/features/flp/FolderLevelPermissions/feature.js.map +1 -0
- package/features/flp/FolderLevelPermissions/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/index.js +4 -0
- package/features/flp/FolderLevelPermissions/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +41 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.d.ts +9 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +34 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.d.ts +8 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.d.ts +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +70 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +8 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +13 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +11 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +38 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.d.ts +3 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +4 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/index.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/index.js +7 -0
- package/features/flp/FolderLevelPermissions/useCases/index.js.map +1 -0
- package/features/flp/GetFlp/GetFlpUseCase.d.ts +7 -0
- package/features/flp/GetFlp/GetFlpUseCase.js +10 -0
- package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -0
- package/features/flp/GetFlp/abstractions.d.ts +8 -0
- package/features/flp/GetFlp/abstractions.js +4 -0
- package/features/flp/GetFlp/abstractions.js.map +1 -0
- package/features/flp/GetFlp/feature.d.ts +1 -0
- package/features/flp/GetFlp/feature.js +13 -0
- package/features/flp/GetFlp/feature.js.map +1 -0
- package/features/flp/GetFlp/index.d.ts +1 -0
- package/features/flp/GetFlp/index.js +3 -0
- package/features/flp/GetFlp/index.js.map +1 -0
- package/features/flp/ListFlps/ListFlpsUseCase.d.ts +7 -0
- package/features/flp/ListFlps/ListFlpsUseCase.js +10 -0
- package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -0
- package/features/flp/ListFlps/abstractions.d.ts +16 -0
- package/features/flp/ListFlps/abstractions.js +4 -0
- package/features/flp/ListFlps/abstractions.js.map +1 -0
- package/features/flp/ListFlps/feature.d.ts +1 -0
- package/features/flp/ListFlps/feature.js +13 -0
- package/features/flp/ListFlps/feature.js.map +1 -0
- package/features/flp/ListFlps/index.d.ts +1 -0
- package/features/flp/ListFlps/index.js +3 -0
- package/features/flp/ListFlps/index.js.map +1 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.d.ts +19 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js +203 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -0
- package/features/flp/UpdateFlp/abstractions.d.ts +14 -0
- package/features/flp/UpdateFlp/abstractions.js +7 -0
- package/features/flp/UpdateFlp/abstractions.js.map +1 -0
- package/features/flp/UpdateFlp/feature.d.ts +6 -0
- package/features/flp/UpdateFlp/feature.js +13 -0
- package/features/flp/UpdateFlp/feature.js.map +1 -0
- package/features/flp/UpdateFlp/index.d.ts +2 -0
- package/features/flp/UpdateFlp/index.js +4 -0
- package/features/flp/UpdateFlp/index.js.map +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.d.ts +14 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +39 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.d.ts +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js +10 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/index.d.ts +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/index.js +3 -0
- package/features/flp/UpdateFlpOnFolderUpdated/index.js.map +1 -0
- package/features/folder/CreateFolder/CreateFolderRepository.d.ts +21 -0
- package/features/folder/CreateFolder/CreateFolderRepository.js +108 -0
- package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.d.ts +12 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.js +39 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -0
- package/features/folder/CreateFolder/abstractions.d.ts +55 -0
- package/features/folder/CreateFolder/abstractions.js +21 -0
- package/features/folder/CreateFolder/abstractions.js.map +1 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.d.ts +11 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +44 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/CreateFolder/events.d.ts +10 -0
- package/features/folder/CreateFolder/events.js +19 -0
- package/features/folder/CreateFolder/events.js.map +1 -0
- package/features/folder/CreateFolder/feature.d.ts +1 -0
- package/features/folder/CreateFolder/feature.js +14 -0
- package/features/folder/CreateFolder/feature.js.map +1 -0
- package/features/folder/CreateFolder/index.d.ts +2 -0
- package/features/folder/CreateFolder/index.js +4 -0
- package/features/folder/CreateFolder/index.js.map +1 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.d.ts +15 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.js +30 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.d.ts +13 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js +55 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -0
- package/features/folder/DeleteFolder/abstractions.d.ts +55 -0
- package/features/folder/DeleteFolder/abstractions.js +21 -0
- package/features/folder/DeleteFolder/abstractions.js.map +1 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.d.ts +11 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +28 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/DeleteFolder/events.d.ts +10 -0
- package/features/folder/DeleteFolder/events.js +19 -0
- package/features/folder/DeleteFolder/events.js.map +1 -0
- package/features/folder/DeleteFolder/feature.d.ts +1 -0
- package/features/folder/DeleteFolder/feature.js +14 -0
- package/features/folder/DeleteFolder/feature.js.map +1 -0
- package/features/folder/DeleteFolder/index.d.ts +2 -0
- package/features/folder/DeleteFolder/index.js +4 -0
- package/features/folder/DeleteFolder/index.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.d.ts +15 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +56 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.d.ts +20 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.js +4 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/feature.d.ts +1 -0
- package/features/folder/EnsureFolderIsEmpty/feature.js +10 -0
- package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/index.d.ts +1 -0
- package/features/folder/EnsureFolderIsEmpty/index.js +3 -0
- package/features/folder/EnsureFolderIsEmpty/index.js.map +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.d.ts +12 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +29 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.d.ts +7 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +17 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.d.ts +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +3 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.js.map +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.d.ts +16 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +56 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.d.ts +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +10 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.d.ts +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +3 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js.map +1 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.d.ts +15 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.js +88 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.d.ts +10 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.js +17 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -0
- package/features/folder/GetAncestors/abstractions.d.ts +38 -0
- package/features/folder/GetAncestors/abstractions.js +15 -0
- package/features/folder/GetAncestors/abstractions.js.map +1 -0
- package/features/folder/GetAncestors/feature.d.ts +1 -0
- package/features/folder/GetAncestors/feature.js +12 -0
- package/features/folder/GetAncestors/feature.js.map +1 -0
- package/features/folder/GetAncestors/index.d.ts +2 -0
- package/features/folder/GetAncestors/index.js +4 -0
- package/features/folder/GetAncestors/index.js.map +1 -0
- package/features/folder/GetFolder/GetFolderRepository.d.ts +15 -0
- package/features/folder/GetFolder/GetFolderRepository.js +31 -0
- package/features/folder/GetFolder/GetFolderRepository.js.map +1 -0
- package/features/folder/GetFolder/GetFolderUseCase.d.ts +10 -0
- package/features/folder/GetFolder/GetFolderUseCase.js +17 -0
- package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -0
- package/features/folder/GetFolder/abstractions.d.ts +54 -0
- package/features/folder/GetFolder/abstractions.js +21 -0
- package/features/folder/GetFolder/abstractions.js.map +1 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.d.ts +29 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +37 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/GetFolder/feature.d.ts +1 -0
- package/features/folder/GetFolder/feature.js +14 -0
- package/features/folder/GetFolder/feature.js.map +1 -0
- package/features/folder/GetFolder/index.d.ts +2 -0
- package/features/folder/GetFolder/index.js +4 -0
- package/features/folder/GetFolder/index.js.map +1 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.d.ts +18 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +103 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.d.ts +10 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +17 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
- package/features/folder/GetFolderHierarchy/abstractions.d.ts +36 -0
- package/features/folder/GetFolderHierarchy/abstractions.js +15 -0
- package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.d.ts +16 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +64 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/GetFolderHierarchy/feature.d.ts +1 -0
- package/features/folder/GetFolderHierarchy/feature.js +14 -0
- package/features/folder/GetFolderHierarchy/feature.js.map +1 -0
- package/features/folder/GetFolderHierarchy/index.d.ts +2 -0
- package/features/folder/GetFolderHierarchy/index.js +4 -0
- package/features/folder/GetFolderHierarchy/index.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.d.ts +13 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +68 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.d.ts +10 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +7 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.d.ts +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js +10 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/index.d.ts +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/index.js +3 -0
- package/features/folder/ListFolderLevelPermissionsTargets/index.js.map +1 -0
- package/features/folder/ListFolders/ListFoldersRepository.d.ts +17 -0
- package/features/folder/ListFolders/ListFoldersRepository.js +54 -0
- package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -0
- package/features/folder/ListFolders/ListFoldersUseCase.d.ts +9 -0
- package/features/folder/ListFolders/ListFoldersUseCase.js +17 -0
- package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -0
- package/features/folder/ListFolders/abstractions.d.ts +42 -0
- package/features/folder/ListFolders/abstractions.js +15 -0
- package/features/folder/ListFolders/abstractions.js.map +1 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.d.ts +17 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +77 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/ListFolders/feature.d.ts +1 -0
- package/features/folder/ListFolders/feature.js +14 -0
- package/features/folder/ListFolders/feature.js.map +1 -0
- package/features/folder/ListFolders/index.d.ts +2 -0
- package/features/folder/ListFolders/index.js +4 -0
- package/features/folder/ListFolders/index.js.map +1 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.d.ts +21 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.js +110 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.d.ts +14 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js +55 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -0
- package/features/folder/UpdateFolder/abstractions.d.ts +60 -0
- package/features/folder/UpdateFolder/abstractions.js +21 -0
- package/features/folder/UpdateFolder/abstractions.js.map +1 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.d.ts +13 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +77 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/UpdateFolder/events.d.ts +10 -0
- package/features/folder/UpdateFolder/events.js +19 -0
- package/features/folder/UpdateFolder/events.js.map +1 -0
- package/features/folder/UpdateFolder/feature.d.ts +1 -0
- package/features/folder/UpdateFolder/feature.js +14 -0
- package/features/folder/UpdateFolder/feature.js.map +1 -0
- package/features/folder/UpdateFolder/index.d.ts +2 -0
- package/features/folder/UpdateFolder/index.js +4 -0
- package/features/folder/UpdateFolder/index.js.map +1 -0
- package/features/folder/shared/EntryToFolderMapper.d.ts +5 -0
- package/features/folder/shared/EntryToFolderMapper.js +22 -0
- package/features/folder/shared/EntryToFolderMapper.js.map +1 -0
- package/features/folder/shared/abstractions.d.ts +5 -0
- package/features/folder/shared/abstractions.js +4 -0
- package/features/folder/shared/abstractions.js.map +1 -0
- package/filter/filter.crud.d.ts +2 -2
- package/filter/filter.crud.js +6 -67
- package/filter/filter.crud.js.map +1 -1
- package/filter/filter.gql.d.ts +2 -2
- package/filter/filter.gql.js +16 -22
- package/filter/filter.gql.js.map +1 -1
- package/filter/filter.model.d.ts +9 -2
- package/filter/filter.model.js +38 -121
- package/filter/filter.model.js.map +1 -1
- package/filter/filter.so.d.ts +2 -2
- package/filter/filter.so.js +38 -32
- package/filter/filter.so.js.map +1 -1
- package/filter/filter.types.d.ts +4 -32
- package/filter/filter.types.js +1 -7
- package/filter/filter.types.js.map +1 -1
- package/flp/flp.crud.d.ts +7 -0
- package/flp/flp.crud.js +91 -0
- package/flp/flp.crud.js.map +1 -0
- package/flp/flp.so.d.ts +20 -0
- package/flp/flp.so.js +220 -0
- package/flp/flp.so.js.map +1 -0
- package/flp/flp.types.d.ts +93 -0
- package/flp/flp.types.js +3 -0
- package/flp/flp.types.js.map +1 -0
- package/flp/index.d.ts +3 -0
- package/flp/index.js +5 -0
- package/flp/index.js.map +1 -0
- package/flp/tasks/createFlp.task.d.ts +16 -0
- package/flp/tasks/createFlp.task.js +35 -0
- package/flp/tasks/createFlp.task.js.map +1 -0
- package/flp/tasks/deleteFlp.task.d.ts +16 -0
- package/flp/tasks/deleteFlp.task.js +35 -0
- package/flp/tasks/deleteFlp.task.js.map +1 -0
- package/flp/tasks/index.d.ts +5 -0
- package/flp/tasks/index.js +19 -0
- package/flp/tasks/index.js.map +1 -0
- package/flp/tasks/syncFlp.task.d.ts +20 -0
- package/flp/tasks/syncFlp.task.js +127 -0
- package/flp/tasks/syncFlp.task.js.map +1 -0
- package/flp/tasks/updateFlp.task.d.ts +16 -0
- package/flp/tasks/updateFlp.task.js +40 -0
- package/flp/tasks/updateFlp.task.js.map +1 -0
- package/folder/createFolderModelModifier.d.ts +36 -0
- package/folder/createFolderModelModifier.js +61 -0
- package/folder/createFolderModelModifier.js.map +1 -0
- package/folder/createFolderTypeDefs.d.ts +7 -0
- package/folder/createFolderTypeDefs.js +186 -0
- package/folder/createFolderTypeDefs.js.map +1 -0
- package/folder/folder.gql.d.ts +4 -3
- package/folder/folder.gql.js +143 -185
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.types.d.ts +40 -79
- package/folder/folder.types.js +1 -5
- package/folder/folder.types.js.map +1 -1
- package/index.d.ts +5 -6
- package/index.js +7 -62
- package/index.js.map +1 -1
- package/package.json +43 -40
- package/types.d.ts +22 -76
- package/types.js +2 -53
- package/types.js.map +1 -1
- package/utils/FoldersCacheFactory.d.ts +10 -0
- package/utils/FoldersCacheFactory.js +24 -0
- package/utils/FoldersCacheFactory.js.map +1 -0
- package/utils/ListCache.d.ts +23 -0
- package/utils/ListCache.js +23 -0
- package/utils/ListCache.js.map +1 -0
- package/utils/Path.d.ts +3 -0
- package/utils/Path.js +11 -0
- package/utils/Path.js.map +1 -0
- package/utils/acoRecordId.js +2 -10
- package/utils/acoRecordId.js.map +1 -1
- package/utils/compress.d.ts +4 -0
- package/utils/compress.js +12 -0
- package/utils/compress.js.map +1 -0
- package/utils/createListSort.d.ts +3 -2
- package/utils/createListSort.js +4 -9
- package/utils/createListSort.js.map +1 -1
- package/utils/createOperationsWrapper.d.ts +2 -2
- package/utils/createOperationsWrapper.js +7 -12
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.d.ts +2 -2
- package/utils/decorators/CmsEntriesCrudDecorators.js +70 -98
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
- package/utils/decorators/FilterEntriesByFolderFactory.d.ts +7 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js +23 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -0
- package/utils/decorators/ListEntriesFactory.d.ts +17 -0
- package/utils/decorators/ListEntriesFactory.js +106 -0
- package/utils/decorators/ListEntriesFactory.js.map +1 -0
- package/utils/decorators/hasRootFolderId.d.ts +7 -0
- package/utils/decorators/hasRootFolderId.js +19 -0
- package/utils/decorators/hasRootFolderId.js.map +1 -0
- package/utils/decorators/isPageModel.d.ts +1 -1
- package/utils/decorators/isPageModel.js +1 -8
- package/utils/decorators/isPageModel.js.map +1 -1
- package/utils/ensureAuthentication.d.ts +2 -2
- package/utils/ensureAuthentication.js +8 -12
- package/utils/ensureAuthentication.js.map +1 -1
- package/utils/pickEntryFieldValues.d.ts +1 -1
- package/utils/pickEntryFieldValues.js +3 -10
- package/utils/pickEntryFieldValues.js.map +1 -1
- package/utils/resolve.d.ts +1 -2
- package/utils/resolve.js +4 -20
- package/utils/resolve.js.map +1 -1
- package/apps/AcoApp.d.ts +0 -21
- package/apps/AcoApp.js +0 -143
- package/apps/AcoApp.js.map +0 -1
- package/apps/AcoApps.d.ts +0 -10
- package/apps/AcoApps.js +0 -75
- package/apps/AcoApps.js.map +0 -1
- package/apps/app.gql.d.ts +0 -3
- package/apps/app.gql.js +0 -59
- package/apps/app.gql.js.map +0 -1
- package/apps/index.d.ts +0 -2
- package/apps/index.js +0 -29
- package/apps/index.js.map +0 -1
- package/createAcoHooks.d.ts +0 -2
- package/createAcoHooks.js +0 -17
- package/createAcoHooks.js.map +0 -1
- package/createAcoModels.d.ts +0 -2
- package/createAcoModels.js +0 -29
- package/createAcoModels.js.map +0 -1
- package/folder/folder.crud.d.ts +0 -10
- package/folder/folder.crud.js +0 -306
- package/folder/folder.crud.js.map +0 -1
- package/folder/folder.model.d.ts +0 -2
- package/folder/folder.model.js +0 -110
- package/folder/folder.model.js.map +0 -1
- package/folder/folder.so.d.ts +0 -3
- package/folder/folder.so.js +0 -170
- package/folder/folder.so.js.map +0 -1
- package/folder/onFolderBeforeDeleteAco.hook.d.ts +0 -2
- package/folder/onFolderBeforeDeleteAco.hook.js +0 -67
- package/folder/onFolderBeforeDeleteAco.hook.js.map +0 -1
- package/folder/onFolderBeforeDeleteFm.hook.d.ts +0 -2
- package/folder/onFolderBeforeDeleteFm.hook.js +0 -49
- package/folder/onFolderBeforeDeleteFm.hook.js.map +0 -1
- package/folder/onFolderBeforeDeleteHcms.hook.d.ts +0 -2
- package/folder/onFolderBeforeDeleteHcms.hook.js +0 -56
- package/folder/onFolderBeforeDeleteHcms.hook.js.map +0 -1
- package/plugins/AcoAppModifierPlugin.d.ts +0 -43
- package/plugins/AcoAppModifierPlugin.js +0 -58
- package/plugins/AcoAppModifierPlugin.js.map +0 -1
- package/plugins/AcoAppRegisterPlugin.d.ts +0 -8
- package/plugins/AcoAppRegisterPlugin.js +0 -21
- package/plugins/AcoAppRegisterPlugin.js.map +0 -1
- package/plugins/index.d.ts +0 -2
- package/plugins/index.js +0 -29
- package/plugins/index.js.map +0 -1
- package/record/graphql/createAppResolvers.d.ts +0 -14
- package/record/graphql/createAppResolvers.js +0 -115
- package/record/graphql/createAppResolvers.js.map +0 -1
- package/record/graphql/createAppSchema.d.ts +0 -9
- package/record/graphql/createAppSchema.js +0 -146
- package/record/graphql/createAppSchema.js.map +0 -1
- package/record/record.crud.d.ts +0 -3
- package/record/record.crud.js +0 -128
- package/record/record.crud.js.map +0 -1
- package/record/record.gql.d.ts +0 -8
- package/record/record.gql.js +0 -43
- package/record/record.gql.js.map +0 -1
- package/record/record.model.d.ts +0 -8
- package/record/record.model.js +0 -91
- package/record/record.model.js.map +0 -1
- package/record/record.so.d.ts +0 -3
- package/record/record.so.js +0 -147
- package/record/record.so.js.map +0 -1
- package/record/record.types.d.ts +0 -144
- package/record/record.types.js +0 -7
- package/record/record.types.js.map +0 -1
- package/utils/FolderLevelPermissions.d.ts +0 -74
- package/utils/FolderLevelPermissions.js +0 -386
- package/utils/FolderLevelPermissions.js.map +0 -1
- package/utils/createModelField.d.ts +0 -5
- package/utils/createModelField.js +0 -39
- package/utils/createModelField.js.map +0 -1
- package/utils/decorators/constants.d.ts +0 -1
- package/utils/decorators/constants.js +0 -9
- package/utils/decorators/constants.js.map +0 -1
- package/utils/decorators/createFolderType.d.ts +0 -2
- package/utils/decorators/createFolderType.js +0 -18
- package/utils/decorators/createFolderType.js.map +0 -1
- package/utils/decorators/decorateIfModelAuthorizationEnabled.d.ts +0 -23
- package/utils/decorators/decorateIfModelAuthorizationEnabled.js +0 -47
- package/utils/decorators/decorateIfModelAuthorizationEnabled.js.map +0 -1
- package/utils/decorators/filterEntriesByFolderFactory.d.ts +0 -6
- package/utils/decorators/filterEntriesByFolderFactory.js +0 -37
- package/utils/decorators/filterEntriesByFolderFactory.js.map +0 -1
- package/utils/decorators/where.d.ts +0 -15
- package/utils/decorators/where.js +0 -60
- package/utils/decorators/where.js.map +0 -1
- package/utils/getFolderAndItsAncestors.d.ts +0 -7
- package/utils/getFolderAndItsAncestors.js +0 -53
- package/utils/getFolderAndItsAncestors.js.map +0 -1
- package/utils/modelFactory.d.ts +0 -13
- package/utils/modelFactory.js +0 -22
- package/utils/modelFactory.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","GetEntryByIdUseCase","FolderLevelPermissions","ROOT_FOLDER","EntryNotAuthorizedError","GetEntryByIdWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","execute","model","id","result","isFail","canUseFolderLevelPermissions","entry","value","folderId","location","permissions","getFolderLevelPermissions","canAccessFolder","canAccessFolderContent","rwd","fail","GetEntryByIdWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["GetEntryByIdWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js\";\nimport type { CmsModel, CmsEntryValues, CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { EntryNotAuthorizedError } from \"@webiny/api-headless-cms/domain/contentEntry/errors.js\";\n\nclass GetEntryByIdWithFlpDecoratorImpl implements GetEntryByIdUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetEntryByIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n id: string\n ): Promise<Result<CmsEntry<T>, GetEntryByIdUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, id);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entry = result.value;\n const folderId = entry?.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return result;\n }\n\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetEntryByIdWithFlpDecorator = createDecorator({\n abstraction: GetEntryByIdUseCase,\n decorator: GetEntryByIdWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,mBAAmB,QAAQ,6EAA6E;AAEjH,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AACpB,SAASC,uBAAuB,QAAQ,wDAAwD;AAEhG,MAAMC,gCAAgC,CAA0C;EAC5EC,WAAWA,CACCC,sBAAwD,EACxDC,SAAwC,EAClD;IAAA,KAFUD,sBAAwD,GAAxDA,sBAAwD;IAAA,KACxDC,SAAwC,GAAxCA,SAAwC;EACjD;EAEH,MAAMC,OAAOA,CACTC,KAAe,EACfC,EAAU,EAC6C;IACvD,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,EAAE,CAAC;IAEzD,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,IAAI,CAAC,IAAI,CAACL,sBAAsB,CAACO,4BAA4B,CAAC,CAAC,EAAE;MAC7D,OAAOF,MAAM;IACjB;IAEA,MAAMG,KAAK,GAAGH,MAAM,CAACI,KAAK;IAC1B,MAAMC,QAAQ,GAAGF,KAAK,EAAEG,QAAQ,EAAED,QAAQ;IAE1C,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKd,WAAW,EAAE;MACvC,OAAOS,MAAM;IACjB;IAEA,MAAMO,WAAW,GAAG,MAAM,IAAI,CAACZ,sBAAsB,CAACa,yBAAyB,CAACH,QAAQ,CAAC;IACzF,MAAMI,eAAe,GAAG,MAAM,IAAI,CAACd,sBAAsB,CAACe,sBAAsB,CAAC;MAC7EH,WAAW;MACXI,GAAG,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,CAACF,eAAe,EAAE;MAClB,OAAOrB,MAAM,CAACwB,IAAI,CAAC,IAAIpB,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,OAAOQ,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMa,4BAA4B,GAAG1B,eAAe,CAAC;EACxD2B,WAAW,EAAEzB,mBAAmB;EAChC0B,SAAS,EAAEtB,gCAAgC;EAC3CuB,YAAY,EAAE,CAAC1B,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntry/abstractions.js";
|
|
3
|
+
import type { CmsModel, CmsEntryGetParams, CmsEntryValues, CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
5
|
+
declare class GetEntryWithFlpDecoratorImpl implements GetEntryUseCase.Interface {
|
|
6
|
+
private folderLevelPermissions;
|
|
7
|
+
private decoratee;
|
|
8
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: GetEntryUseCase.Interface);
|
|
9
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryGetParams): Promise<Result<CmsEntry<T>, GetEntryUseCase.Error>>;
|
|
10
|
+
}
|
|
11
|
+
export declare const GetEntryWithFlpDecorator: typeof GetEntryWithFlpDecoratorImpl;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createDecorator, Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntry/abstractions.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
|
+
import { ROOT_FOLDER } from "../../../constants.js";
|
|
5
|
+
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors";
|
|
6
|
+
class GetEntryWithFlpDecoratorImpl {
|
|
7
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
8
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
9
|
+
this.decoratee = decoratee;
|
|
10
|
+
}
|
|
11
|
+
async execute(model, params) {
|
|
12
|
+
const result = await this.decoratee.execute(model, params);
|
|
13
|
+
if (result.isFail()) {
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
const entry = result.value;
|
|
20
|
+
const folderId = entry?.location?.folderId;
|
|
21
|
+
if (!folderId || folderId === ROOT_FOLDER) {
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
25
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
26
|
+
permissions,
|
|
27
|
+
rwd: "r"
|
|
28
|
+
});
|
|
29
|
+
if (!canAccessFolder) {
|
|
30
|
+
return Result.fail(new EntryNotAuthorizedError());
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export const GetEntryWithFlpDecorator = createDecorator({
|
|
36
|
+
abstraction: GetEntryUseCase,
|
|
37
|
+
decorator: GetEntryWithFlpDecoratorImpl,
|
|
38
|
+
dependencies: [FolderLevelPermissions]
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=GetEntryWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","GetEntryUseCase","FolderLevelPermissions","ROOT_FOLDER","EntryNotAuthorizedError","GetEntryWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","execute","model","params","result","isFail","canUseFolderLevelPermissions","entry","value","folderId","location","permissions","getFolderLevelPermissions","canAccessFolder","canAccessFolderContent","rwd","fail","GetEntryWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["GetEntryWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntry/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryGetParams,\n CmsEntryValues,\n CmsEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { EntryNotAuthorizedError } from \"@webiny/api-headless-cms/domain/contentEntry/errors\";\n\nclass GetEntryWithFlpDecoratorImpl implements GetEntryUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetEntryUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryGetParams\n ): Promise<Result<CmsEntry<T>, GetEntryUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, params);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entry = result.value;\n const folderId = entry?.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return result;\n }\n\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetEntryWithFlpDecorator = createDecorator({\n abstraction: GetEntryUseCase,\n decorator: GetEntryWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,eAAe,QAAQ,yEAAyE;AAOzG,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AACpB,SAASC,uBAAuB,QAAQ,qDAAqD;AAE7F,MAAMC,4BAA4B,CAAsC;EACpEC,WAAWA,CACCC,sBAAwD,EACxDC,SAAoC,EAC9C;IAAA,KAFUD,sBAAwD,GAAxDA,sBAAwD;IAAA,KACxDC,SAAoC,GAApCA,SAAoC;EAC7C;EAEH,MAAMC,OAAOA,CACTC,KAAe,EACfC,MAAyB,EAC0B;IACnD,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,MAAM,CAAC;IAE7D,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,IAAI,CAAC,IAAI,CAACL,sBAAsB,CAACO,4BAA4B,CAAC,CAAC,EAAE;MAC7D,OAAOF,MAAM;IACjB;IAEA,MAAMG,KAAK,GAAGH,MAAM,CAACI,KAAK;IAC1B,MAAMC,QAAQ,GAAGF,KAAK,EAAEG,QAAQ,EAAED,QAAQ;IAE1C,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKd,WAAW,EAAE;MACvC,OAAOS,MAAM;IACjB;IAEA,MAAMO,WAAW,GAAG,MAAM,IAAI,CAACZ,sBAAsB,CAACa,yBAAyB,CAACH,QAAQ,CAAC;IACzF,MAAMI,eAAe,GAAG,MAAM,IAAI,CAACd,sBAAsB,CAACe,sBAAsB,CAAC;MAC7EH,WAAW;MACXI,GAAG,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,CAACF,eAAe,EAAE;MAClB,OAAOrB,MAAM,CAACwB,IAAI,CAAC,IAAIpB,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,OAAOQ,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMa,wBAAwB,GAAG1B,eAAe,CAAC;EACpD2B,WAAW,EAAEzB,eAAe;EAC5B0B,SAAS,EAAEtB,4BAA4B;EACvCuB,YAAY,EAAE,CAAC1B,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetLatestEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/abstractions.js";
|
|
3
|
+
import type { CmsModel, CmsEntryValues, CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
5
|
+
declare class GetLatestEntriesByIdsWithFlpDecoratorImpl implements GetLatestEntriesByIdsUseCase.Interface {
|
|
6
|
+
private folderLevelPermissions;
|
|
7
|
+
private decoratee;
|
|
8
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: GetLatestEntriesByIdsUseCase.Interface);
|
|
9
|
+
execute<T extends CmsEntryValues>(model: CmsModel, ids: string[]): Promise<Result<CmsEntry<T>[], GetLatestEntriesByIdsUseCase.Error>>;
|
|
10
|
+
private filterEntriesByFolder;
|
|
11
|
+
}
|
|
12
|
+
export declare const GetLatestEntriesByIdsWithFlpDecorator: typeof GetLatestEntriesByIdsWithFlpDecoratorImpl;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
+
import { Result } from "@webiny/feature/api";
|
|
3
|
+
import { GetLatestEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ROOT_FOLDER } from "../../../constants.js";
|
|
6
|
+
class GetLatestEntriesByIdsWithFlpDecoratorImpl {
|
|
7
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
8
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
9
|
+
this.decoratee = decoratee;
|
|
10
|
+
}
|
|
11
|
+
async execute(model, ids) {
|
|
12
|
+
const result = await this.decoratee.execute(model, ids);
|
|
13
|
+
if (result.isFail()) {
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
const entries = result.value;
|
|
20
|
+
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
21
|
+
return Result.ok(filteredEntries);
|
|
22
|
+
}
|
|
23
|
+
async filterEntriesByFolder(entries) {
|
|
24
|
+
const results = await Promise.all(entries.map(async entry => {
|
|
25
|
+
const folderId = entry.location?.folderId;
|
|
26
|
+
if (!folderId || folderId === ROOT_FOLDER) {
|
|
27
|
+
return entry;
|
|
28
|
+
}
|
|
29
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
30
|
+
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
31
|
+
permissions,
|
|
32
|
+
rwd: "r"
|
|
33
|
+
});
|
|
34
|
+
return canAccess ? entry : null;
|
|
35
|
+
}));
|
|
36
|
+
return results.filter(entry => !!entry);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export const GetLatestEntriesByIdsWithFlpDecorator = createDecorator({
|
|
40
|
+
abstraction: GetLatestEntriesByIdsUseCase,
|
|
41
|
+
decorator: GetLatestEntriesByIdsWithFlpDecoratorImpl,
|
|
42
|
+
dependencies: [FolderLevelPermissions]
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=GetLatestEntriesByIdsWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","GetLatestEntriesByIdsUseCase","FolderLevelPermissions","ROOT_FOLDER","GetLatestEntriesByIdsWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","execute","model","ids","result","isFail","canUseFolderLevelPermissions","entries","value","filteredEntries","filterEntriesByFolder","ok","results","Promise","all","map","entry","folderId","location","permissions","getFolderLevelPermissions","canAccess","canAccessFolderContent","rwd","filter","GetLatestEntriesByIdsWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["GetLatestEntriesByIdsWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { GetLatestEntriesByIdsUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/abstractions.js\";\nimport type { CmsModel, CmsEntryValues, CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass GetLatestEntriesByIdsWithFlpDecoratorImpl implements GetLatestEntriesByIdsUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetLatestEntriesByIdsUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ): Promise<Result<CmsEntry<T>[], GetLatestEntriesByIdsUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, ids);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entries = result.value;\n const filteredEntries = await this.filterEntriesByFolder<T>(entries);\n\n return Result.ok(filteredEntries);\n }\n\n private async filterEntriesByFolder<T extends CmsEntryValues = CmsEntryValues>(\n entries: CmsEntry<T>[]\n ): Promise<CmsEntry<T>[]> {\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccess = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n return canAccess ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry<T> => !!entry);\n }\n}\n\nexport const GetLatestEntriesByIdsWithFlpDecorator = createDecorator({\n abstraction: GetLatestEntriesByIdsUseCase,\n decorator: GetLatestEntriesByIdsWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,4BAA4B,QAAQ,sFAAsF;AAEnI,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AAEpB,MAAMC,yCAAyC,CAAmD;EAC9FC,WAAWA,CACCC,sBAAwD,EACxDC,SAAiD,EAC3D;IAAA,KAFUD,sBAAwD,GAAxDA,sBAAwD;IAAA,KACxDC,SAAiD,GAAjDA,SAAiD;EAC1D;EAEH,MAAMC,OAAOA,CACTC,KAAe,EACfC,GAAa,EACqD;IAClE,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,GAAG,CAAC;IAE1D,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,IAAI,CAAC,IAAI,CAACL,sBAAsB,CAACO,4BAA4B,CAAC,CAAC,EAAE;MAC7D,OAAOF,MAAM;IACjB;IAEA,MAAMG,OAAO,GAAGH,MAAM,CAACI,KAAK;IAC5B,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAAIH,OAAO,CAAC;IAEpE,OAAOd,MAAM,CAACkB,EAAE,CAACF,eAAe,CAAC;EACrC;EAEA,MAAcC,qBAAqBA,CAC/BH,OAAsB,EACA;IACtB,MAAMK,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7BP,OAAO,CAACQ,GAAG,CAAC,MAAMC,KAAK,IAAI;MACvB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,QAAQ,EAAED,QAAQ;MACzC,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKrB,WAAW,EAAE;QACvC,OAAOoB,KAAK;MAChB;MAEA,MAAMG,WAAW,GACb,MAAM,IAAI,CAACpB,sBAAsB,CAACqB,yBAAyB,CAACH,QAAQ,CAAC;MACzE,MAAMI,SAAS,GAAG,MAAM,IAAI,CAACtB,sBAAsB,CAACuB,sBAAsB,CAAC;QACvEH,WAAW;QACXI,GAAG,EAAE;MACT,CAAC,CAAC;MACF,OAAOF,SAAS,GAAGL,KAAK,GAAG,IAAI;IACnC,CAAC,CACL,CAAC;IAED,OAAOJ,OAAO,CAACY,MAAM,CAAER,KAAK,IAA2B,CAAC,CAACA,KAAK,CAAC;EACnE;AACJ;AAEA,OAAO,MAAMS,qCAAqC,GAAGjC,eAAe,CAAC;EACjEkC,WAAW,EAAEhC,4BAA4B;EACzCiC,SAAS,EAAE9B,yCAAyC;EACpD+B,YAAY,EAAE,CAACjC,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetPublishedEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetPublishedEntriesByIds/abstractions.js";
|
|
3
|
+
import type { CmsEntry, CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
5
|
+
declare class GetPublishedEntriesByIdsWithFlpDecoratorImpl implements GetPublishedEntriesByIdsUseCase.Interface {
|
|
6
|
+
private folderLevelPermissions;
|
|
7
|
+
private decoratee;
|
|
8
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: GetPublishedEntriesByIdsUseCase.Interface);
|
|
9
|
+
execute<T extends CmsEntryValues>(model: CmsModel, ids: string[]): Promise<Result<CmsEntry<T>[], GetPublishedEntriesByIdsUseCase.Error>>;
|
|
10
|
+
private filterEntriesByFolder;
|
|
11
|
+
}
|
|
12
|
+
export declare const GetPublishedEntriesByIdsWithFlpDecorator: typeof GetPublishedEntriesByIdsWithFlpDecoratorImpl;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createDecorator, Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetPublishedEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetPublishedEntriesByIds/abstractions.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
|
+
import { ROOT_FOLDER } from "../../../constants.js";
|
|
5
|
+
class GetPublishedEntriesByIdsWithFlpDecoratorImpl {
|
|
6
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
7
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
}
|
|
10
|
+
async execute(model, ids) {
|
|
11
|
+
const result = await this.decoratee.execute(model, ids);
|
|
12
|
+
if (result.isFail()) {
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
const entries = result.value;
|
|
19
|
+
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
20
|
+
return Result.ok(filteredEntries);
|
|
21
|
+
}
|
|
22
|
+
async filterEntriesByFolder(entries) {
|
|
23
|
+
const results = await Promise.all(entries.map(async entry => {
|
|
24
|
+
const folderId = entry.location?.folderId;
|
|
25
|
+
if (!folderId || folderId === ROOT_FOLDER) {
|
|
26
|
+
return entry;
|
|
27
|
+
}
|
|
28
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
29
|
+
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
30
|
+
permissions,
|
|
31
|
+
rwd: "r"
|
|
32
|
+
});
|
|
33
|
+
return canAccess ? entry : null;
|
|
34
|
+
}));
|
|
35
|
+
return results.filter(entry => !!entry);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const GetPublishedEntriesByIdsWithFlpDecorator = createDecorator({
|
|
39
|
+
abstraction: GetPublishedEntriesByIdsUseCase,
|
|
40
|
+
decorator: GetPublishedEntriesByIdsWithFlpDecoratorImpl,
|
|
41
|
+
dependencies: [FolderLevelPermissions]
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=GetPublishedEntriesByIdsWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","GetPublishedEntriesByIdsUseCase","FolderLevelPermissions","ROOT_FOLDER","GetPublishedEntriesByIdsWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","execute","model","ids","result","isFail","canUseFolderLevelPermissions","entries","value","filteredEntries","filterEntriesByFolder","ok","results","Promise","all","map","entry","folderId","location","permissions","getFolderLevelPermissions","canAccess","canAccessFolderContent","rwd","filter","GetPublishedEntriesByIdsWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["GetPublishedEntriesByIdsWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetPublishedEntriesByIdsUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetPublishedEntriesByIds/abstractions.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass GetPublishedEntriesByIdsWithFlpDecoratorImpl\n implements GetPublishedEntriesByIdsUseCase.Interface\n{\n public constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetPublishedEntriesByIdsUseCase.Interface\n ) {}\n\n public async execute<T extends CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ): Promise<Result<CmsEntry<T>[], GetPublishedEntriesByIdsUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, ids);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entries = result.value;\n const filteredEntries = await this.filterEntriesByFolder<T>(entries);\n\n return Result.ok(filteredEntries);\n }\n\n private async filterEntriesByFolder<T extends CmsEntryValues = CmsEntryValues>(\n entries: CmsEntry<T>[]\n ): Promise<CmsEntry<T>[]> {\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccess = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n return canAccess ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry<T> => !!entry);\n }\n}\n\nexport const GetPublishedEntriesByIdsWithFlpDecorator = createDecorator({\n abstraction: GetPublishedEntriesByIdsUseCase,\n decorator: GetPublishedEntriesByIdsWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,+BAA+B,QAAQ,yFAAyF;AAEzI,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AAEpB,MAAMC,4CAA4C,CAElD;EACWC,WAAWA,CACNC,sBAAwD,EACxDC,SAAoD,EAC9D;IAAA,KAFUD,sBAAwD,GAAxDA,sBAAwD;IAAA,KACxDC,SAAoD,GAApDA,SAAoD;EAC7D;EAEH,MAAaC,OAAOA,CAChBC,KAAe,EACfC,GAAa,EACwD;IACrE,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,GAAG,CAAC;IAE1D,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOD,MAAM;IACjB;IAEA,IAAI,CAAC,IAAI,CAACL,sBAAsB,CAACO,4BAA4B,CAAC,CAAC,EAAE;MAC7D,OAAOF,MAAM;IACjB;IAEA,MAAMG,OAAO,GAAGH,MAAM,CAACI,KAAK;IAC5B,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAAIH,OAAO,CAAC;IAEpE,OAAOd,MAAM,CAACkB,EAAE,CAACF,eAAe,CAAC;EACrC;EAEA,MAAcC,qBAAqBA,CAC/BH,OAAsB,EACA;IACtB,MAAMK,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7BP,OAAO,CAACQ,GAAG,CAAC,MAAMC,KAAK,IAAI;MACvB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,QAAQ,EAAED,QAAQ;MACzC,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKrB,WAAW,EAAE;QACvC,OAAOoB,KAAK;MAChB;MAEA,MAAMG,WAAW,GACb,MAAM,IAAI,CAACpB,sBAAsB,CAACqB,yBAAyB,CAACH,QAAQ,CAAC;MACzE,MAAMI,SAAS,GAAG,MAAM,IAAI,CAACtB,sBAAsB,CAACuB,sBAAsB,CAAC;QACvEH,WAAW;QACXI,GAAG,EAAE;MACT,CAAC,CAAC;MACF,OAAOF,SAAS,GAAGL,KAAK,GAAG,IAAI;IACnC,CAAC,CACL,CAAC;IAED,OAAOJ,OAAO,CAACY,MAAM,CAAER,KAAK,IAA2B,CAAC,CAACA,KAAK,CAAC;EACnE;AACJ;AAEA,OAAO,MAAMS,wCAAwC,GAAGjC,eAAe,CAAC;EACpEkC,WAAW,EAAEhC,+BAA+B;EAC5CiC,SAAS,EAAE9B,4CAA4C;EACvD+B,YAAY,EAAE,CAACjC,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
2
|
+
import type { CmsModel, CmsEntryValues, CmsEntryListParams } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
4
|
+
declare class ListDeletedEntriesWithFlpDecoratorImpl implements ListDeletedEntriesUseCase.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
private readonly listEntriesHandler;
|
|
7
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: ListDeletedEntriesUseCase.Interface);
|
|
8
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params?: CmsEntryListParams): ListDeletedEntriesUseCase.Return<T>;
|
|
9
|
+
}
|
|
10
|
+
export declare const ListDeletedEntriesWithFlpDecorator: typeof ListDeletedEntriesWithFlpDecoratorImpl;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
+
import { Result } from "@webiny/feature/api";
|
|
3
|
+
import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
6
|
+
class ListDeletedEntriesWithFlpDecoratorImpl {
|
|
7
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
10
|
+
}
|
|
11
|
+
async execute(model, params) {
|
|
12
|
+
const loader = async params => {
|
|
13
|
+
const result = await this.decoratee.execute(model, params);
|
|
14
|
+
return result.value;
|
|
15
|
+
};
|
|
16
|
+
const {
|
|
17
|
+
entries,
|
|
18
|
+
meta
|
|
19
|
+
} = await this.listEntriesHandler.execute({
|
|
20
|
+
model,
|
|
21
|
+
dataLoader: loader,
|
|
22
|
+
initialParams: params
|
|
23
|
+
});
|
|
24
|
+
return Result.ok({
|
|
25
|
+
entries,
|
|
26
|
+
meta
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const ListDeletedEntriesWithFlpDecorator = createDecorator({
|
|
31
|
+
abstraction: ListDeletedEntriesUseCase,
|
|
32
|
+
decorator: ListDeletedEntriesWithFlpDecoratorImpl,
|
|
33
|
+
dependencies: [FolderLevelPermissions]
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ListDeletedEntriesWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","ListDeletedEntriesUseCase","FolderLevelPermissions","ListEntriesFactory","ListDeletedEntriesWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","listEntriesHandler","execute","model","params","loader","result","value","entries","meta","dataLoader","initialParams","ok","ListDeletedEntriesWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["ListDeletedEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ListDeletedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryValues,\n CmsEntryListParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListDeletedEntriesWithFlpDecoratorImpl implements ListDeletedEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListDeletedEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListDeletedEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListDeletedEntriesWithFlpDecorator = createDecorator({\n abstraction: ListDeletedEntriesUseCase,\n decorator: ListDeletedEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,yBAAyB,QAAQ,4EAA4E;AAMtH,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAE3B,MAAMC,sCAAsC,CAAgD;EAGxFC,WAAWA,CACPC,sBAAwD,EAChDC,SAA8C,EACxD;IAAA,KADUA,SAA8C,GAA9CA,SAA8C;IAEtD,IAAI,CAACC,kBAAkB,GAAG,IAAIL,kBAAkB,CAACG,sBAAsB,CAAC;EAC5E;EAEA,MAAMG,OAAOA,CACTC,KAAe,EACfC,MAA2B,EACQ;IACnC,MAAMC,MAAM,GAAG,MAAOD,MAA2B,IAAK;MAClD,MAAME,MAAM,GAAG,MAAM,IAAI,CAACN,SAAS,CAACE,OAAO,CAAIC,KAAK,EAAEC,MAAM,CAAC;MAC7D,OAAOE,MAAM,CAACC,KAAK;IACvB,CAAC;IAED,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAG,MAAM,IAAI,CAACR,kBAAkB,CAACC,OAAO,CAAI;MAC/DC,KAAK;MACLO,UAAU,EAAEL,MAAM;MAClBM,aAAa,EAAEP;IACnB,CAAC,CAAC;IAEF,OAAOX,MAAM,CAACmB,EAAE,CAAC;MAAEJ,OAAO;MAAEC;IAAK,CAAC,CAAC;EACvC;AACJ;AAEA,OAAO,MAAMI,kCAAkC,GAAGrB,eAAe,CAAC;EAC9DsB,WAAW,EAAEpB,yBAAyB;EACtCqB,SAAS,EAAElB,sCAAsC;EACjDmB,YAAY,EAAE,CAACrB,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ListEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
2
|
+
import type { CmsEntryListParams, CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
4
|
+
declare class ListEntriesWithFlpDecoratorImpl implements ListEntriesUseCase.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
private readonly listEntriesHandler;
|
|
7
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: ListEntriesUseCase.Interface);
|
|
8
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params?: CmsEntryListParams): ListEntriesUseCase.Return<T>;
|
|
9
|
+
}
|
|
10
|
+
export declare const ListEntriesWithFlpDecorator: typeof ListEntriesWithFlpDecoratorImpl;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createDecorator, Result } from "@webiny/feature/api";
|
|
2
|
+
import { ListEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
|
+
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
5
|
+
class ListEntriesWithFlpDecoratorImpl {
|
|
6
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
7
|
+
this.decoratee = decoratee;
|
|
8
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
const loader = async params => {
|
|
12
|
+
const result = await this.decoratee.execute(model, params);
|
|
13
|
+
return result.value;
|
|
14
|
+
};
|
|
15
|
+
const {
|
|
16
|
+
entries,
|
|
17
|
+
meta
|
|
18
|
+
} = await this.listEntriesHandler.execute({
|
|
19
|
+
model,
|
|
20
|
+
dataLoader: loader,
|
|
21
|
+
initialParams: params
|
|
22
|
+
});
|
|
23
|
+
return Result.ok({
|
|
24
|
+
entries,
|
|
25
|
+
meta
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const ListEntriesWithFlpDecorator = createDecorator({
|
|
30
|
+
abstraction: ListEntriesUseCase,
|
|
31
|
+
decorator: ListEntriesWithFlpDecoratorImpl,
|
|
32
|
+
dependencies: [FolderLevelPermissions]
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=ListEntriesWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","ListEntriesUseCase","FolderLevelPermissions","ListEntriesFactory","ListEntriesWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","listEntriesHandler","execute","model","params","loader","result","value","entries","meta","dataLoader","initialParams","ok","ListEntriesWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["ListEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { ListEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsEntryListParams,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListEntriesWithFlpDecoratorImpl implements ListEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListEntriesWithFlpDecorator = createDecorator({\n abstraction: ListEntriesUseCase,\n decorator: ListEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,kBAAkB,QAAQ,4EAA4E;AAM/G,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAE3B,MAAMC,+BAA+B,CAAyC;EAG1EC,WAAWA,CACPC,sBAAwD,EAChDC,SAAuC,EACjD;IAAA,KADUA,SAAuC,GAAvCA,SAAuC;IAE/C,IAAI,CAACC,kBAAkB,GAAG,IAAIL,kBAAkB,CAACG,sBAAsB,CAAC;EAC5E;EAEA,MAAMG,OAAOA,CACTC,KAAe,EACfC,MAA2B,EACC;IAC5B,MAAMC,MAAM,GAAG,MAAOD,MAA2B,IAAK;MAClD,MAAME,MAAM,GAAG,MAAM,IAAI,CAACN,SAAS,CAACE,OAAO,CAAIC,KAAK,EAAEC,MAAM,CAAC;MAC7D,OAAOE,MAAM,CAACC,KAAK;IACvB,CAAC;IAED,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAG,MAAM,IAAI,CAACR,kBAAkB,CAACC,OAAO,CAAI;MAC/DC,KAAK;MACLO,UAAU,EAAEL,MAAM;MAClBM,aAAa,EAAEP;IACnB,CAAC,CAAC;IAEF,OAAOX,MAAM,CAACmB,EAAE,CAAC;MAAEJ,OAAO;MAAEC;IAAK,CAAC,CAAC;EACvC;AACJ;AAEA,OAAO,MAAMI,2BAA2B,GAAGrB,eAAe,CAAC;EACvDsB,WAAW,EAAEpB,kBAAkB;EAC/BqB,SAAS,EAAElB,+BAA+B;EAC1CmB,YAAY,EAAE,CAACrB,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
2
|
+
import type { CmsModel, CmsEntryValues, CmsEntryListParams } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
4
|
+
declare class ListLatestEntriesWithFlpDecoratorImpl implements ListLatestEntriesUseCase.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
private readonly listEntriesHandler;
|
|
7
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: ListLatestEntriesUseCase.Interface);
|
|
8
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params?: CmsEntryListParams): ListLatestEntriesUseCase.Return<T>;
|
|
9
|
+
}
|
|
10
|
+
export declare const ListLatestEntriesWithFlpDecorator: typeof ListLatestEntriesWithFlpDecoratorImpl;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
+
import { Result } from "@webiny/feature/api";
|
|
3
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
6
|
+
class ListLatestEntriesWithFlpDecoratorImpl {
|
|
7
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
10
|
+
}
|
|
11
|
+
async execute(model, params) {
|
|
12
|
+
const loader = async params => {
|
|
13
|
+
const result = await this.decoratee.execute(model, params);
|
|
14
|
+
return result.value;
|
|
15
|
+
};
|
|
16
|
+
const {
|
|
17
|
+
entries,
|
|
18
|
+
meta
|
|
19
|
+
} = await this.listEntriesHandler.execute({
|
|
20
|
+
model,
|
|
21
|
+
dataLoader: loader,
|
|
22
|
+
initialParams: params
|
|
23
|
+
});
|
|
24
|
+
return Result.ok({
|
|
25
|
+
entries,
|
|
26
|
+
meta
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const ListLatestEntriesWithFlpDecorator = createDecorator({
|
|
31
|
+
abstraction: ListLatestEntriesUseCase,
|
|
32
|
+
decorator: ListLatestEntriesWithFlpDecoratorImpl,
|
|
33
|
+
dependencies: [FolderLevelPermissions]
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ListLatestEntriesWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","ListLatestEntriesUseCase","FolderLevelPermissions","ListEntriesFactory","ListLatestEntriesWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","listEntriesHandler","execute","model","params","loader","result","value","entries","meta","dataLoader","initialParams","ok","ListLatestEntriesWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["ListLatestEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryValues,\n CmsEntryListParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListLatestEntriesWithFlpDecoratorImpl implements ListLatestEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListLatestEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListLatestEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListLatestEntriesWithFlpDecorator = createDecorator({\n abstraction: ListLatestEntriesUseCase,\n decorator: ListLatestEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,wBAAwB,QAAQ,4EAA4E;AAMrH,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAE3B,MAAMC,qCAAqC,CAA+C;EAGtFC,WAAWA,CACPC,sBAAwD,EAChDC,SAA6C,EACvD;IAAA,KADUA,SAA6C,GAA7CA,SAA6C;IAErD,IAAI,CAACC,kBAAkB,GAAG,IAAIL,kBAAkB,CAACG,sBAAsB,CAAC;EAC5E;EAEA,MAAMG,OAAOA,CACTC,KAAe,EACfC,MAA2B,EACO;IAClC,MAAMC,MAAM,GAAG,MAAOD,MAA2B,IAAK;MAClD,MAAME,MAAM,GAAG,MAAM,IAAI,CAACN,SAAS,CAACE,OAAO,CAAIC,KAAK,EAAEC,MAAM,CAAC;MAC7D,OAAOE,MAAM,CAACC,KAAK;IACvB,CAAC;IAED,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAG,MAAM,IAAI,CAACR,kBAAkB,CAACC,OAAO,CAAI;MAC/DC,KAAK;MACLO,UAAU,EAAEL,MAAM;MAClBM,aAAa,EAAEP;IACnB,CAAC,CAAC;IAEF,OAAOX,MAAM,CAACmB,EAAE,CAAC;MAAEJ,OAAO;MAAEC;IAAK,CAAC,CAAC;EACvC;AACJ;AAEA,OAAO,MAAMI,iCAAiC,GAAGrB,eAAe,CAAC;EAC7DsB,WAAW,EAAEpB,wBAAwB;EACrCqB,SAAS,EAAElB,qCAAqC;EAChDmB,YAAY,EAAE,CAACrB,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
2
|
+
import type { CmsModel, CmsEntryValues, CmsEntryListParams } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
4
|
+
declare class ListPublishedEntriesWithFlpDecoratorImpl implements ListPublishedEntriesUseCase.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
private readonly listEntriesHandler;
|
|
7
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: ListPublishedEntriesUseCase.Interface);
|
|
8
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params?: CmsEntryListParams): ListPublishedEntriesUseCase.Return<T>;
|
|
9
|
+
}
|
|
10
|
+
export declare const ListPublishedEntriesWithFlpDecorator: typeof ListPublishedEntriesWithFlpDecoratorImpl;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
+
import { Result } from "@webiny/feature/api";
|
|
3
|
+
import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
6
|
+
class ListPublishedEntriesWithFlpDecoratorImpl {
|
|
7
|
+
constructor(folderLevelPermissions, decoratee) {
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
10
|
+
}
|
|
11
|
+
async execute(model, params) {
|
|
12
|
+
const loader = async params => {
|
|
13
|
+
const result = await this.decoratee.execute(model, params);
|
|
14
|
+
return result.value;
|
|
15
|
+
};
|
|
16
|
+
const {
|
|
17
|
+
entries,
|
|
18
|
+
meta
|
|
19
|
+
} = await this.listEntriesHandler.execute({
|
|
20
|
+
model,
|
|
21
|
+
dataLoader: loader,
|
|
22
|
+
initialParams: params
|
|
23
|
+
});
|
|
24
|
+
return Result.ok({
|
|
25
|
+
entries,
|
|
26
|
+
meta
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const ListPublishedEntriesWithFlpDecorator = createDecorator({
|
|
31
|
+
abstraction: ListPublishedEntriesUseCase,
|
|
32
|
+
decorator: ListPublishedEntriesWithFlpDecoratorImpl,
|
|
33
|
+
dependencies: [FolderLevelPermissions]
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ListPublishedEntriesWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","ListPublishedEntriesUseCase","FolderLevelPermissions","ListEntriesFactory","ListPublishedEntriesWithFlpDecoratorImpl","constructor","folderLevelPermissions","decoratee","listEntriesHandler","execute","model","params","loader","result","value","entries","meta","dataLoader","initialParams","ok","ListPublishedEntriesWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["ListPublishedEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ListPublishedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryValues,\n CmsEntryListParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListPublishedEntriesWithFlpDecoratorImpl implements ListPublishedEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListPublishedEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListPublishedEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListPublishedEntriesWithFlpDecorator = createDecorator({\n abstraction: ListPublishedEntriesUseCase,\n decorator: ListPublishedEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,2BAA2B,QAAQ,4EAA4E;AAMxH,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAE3B,MAAMC,wCAAwC,CAAkD;EAG5FC,WAAWA,CACPC,sBAAwD,EAChDC,SAAgD,EAC1D;IAAA,KADUA,SAAgD,GAAhDA,SAAgD;IAExD,IAAI,CAACC,kBAAkB,GAAG,IAAIL,kBAAkB,CAACG,sBAAsB,CAAC;EAC5E;EAEA,MAAMG,OAAOA,CACTC,KAAe,EACfC,MAA2B,EACU;IACrC,MAAMC,MAAM,GAAG,MAAOD,MAA2B,IAAK;MAClD,MAAME,MAAM,GAAG,MAAM,IAAI,CAACN,SAAS,CAACE,OAAO,CAAIC,KAAK,EAAEC,MAAM,CAAC;MAC7D,OAAOE,MAAM,CAACC,KAAK;IACvB,CAAC;IAED,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAG,MAAM,IAAI,CAACR,kBAAkB,CAACC,OAAO,CAAI;MAC/DC,KAAK;MACLO,UAAU,EAAEL,MAAM;MAClBM,aAAa,EAAEP;IACnB,CAAC,CAAC;IAEF,OAAOX,MAAM,CAACmB,EAAE,CAAC;MAAEJ,OAAO;MAAEC;IAAK,CAAC,CAAC;EACvC;AACJ;AAEA,OAAO,MAAMI,oCAAoC,GAAGrB,eAAe,CAAC;EAChEsB,WAAW,EAAEpB,2BAA2B;EACxCqB,SAAS,EAAElB,wCAAwC;EACnDmB,YAAY,EAAE,CAACrB,sBAAsB;AACzC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { MoveEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/abstractions.js";
|
|
3
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/abstractions.js";
|
|
4
|
+
import type { CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
5
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
6
|
+
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors.js";
|
|
7
|
+
declare class MoveEntryWithFlpDecoratorImpl implements MoveEntryUseCase.Interface {
|
|
8
|
+
private folderLevelPermissions;
|
|
9
|
+
private getRevisionById;
|
|
10
|
+
private decoratee;
|
|
11
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, getRevisionById: GetRevisionByIdUseCase.Interface, decoratee: MoveEntryUseCase.Interface);
|
|
12
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(model: CmsModel, id: string, targetFolderId: string): Promise<Result<import("@webiny/api-headless-cms/types/types").CmsEntry<T>, EntryNotAuthorizedError | import("@webiny/api-headless-cms/domain/contentEntry/errors.js").EntryPersistenceError | import("@webiny/api-headless-cms/domain/contentEntry/errors.js").EntryNotFoundError>>;
|
|
13
|
+
}
|
|
14
|
+
export declare const MoveEntryWithFlpDecorator: typeof MoveEntryWithFlpDecoratorImpl;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createDecorator, Result } from "@webiny/feature/api";
|
|
2
|
+
import { MoveEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/MoveEntry/abstractions.js";
|
|
3
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ROOT_FOLDER } from "../../../constants.js";
|
|
6
|
+
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors.js";
|
|
7
|
+
class MoveEntryWithFlpDecoratorImpl {
|
|
8
|
+
constructor(folderLevelPermissions, getRevisionById, decoratee) {
|
|
9
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
10
|
+
this.getRevisionById = getRevisionById;
|
|
11
|
+
this.decoratee = decoratee;
|
|
12
|
+
}
|
|
13
|
+
async execute(model, id, targetFolderId) {
|
|
14
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {
|
|
15
|
+
return this.decoratee.execute(model, id, targetFolderId);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// First, get the entry to check its current folder
|
|
19
|
+
const entryResult = await this.getRevisionById.execute(model, id);
|
|
20
|
+
if (entryResult.isFail()) {
|
|
21
|
+
return this.decoratee.execute(model, id, targetFolderId);
|
|
22
|
+
}
|
|
23
|
+
const entry = entryResult.value;
|
|
24
|
+
const currentFolderId = entry?.location?.folderId || ROOT_FOLDER;
|
|
25
|
+
|
|
26
|
+
// If the entry is in the same folder we are trying to move it to, just continue
|
|
27
|
+
if (currentFolderId === targetFolderId) {
|
|
28
|
+
return this.decoratee.execute(model, id, targetFolderId);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// If current folder is not ROOT, check for access
|
|
32
|
+
if (currentFolderId !== ROOT_FOLDER) {
|
|
33
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(currentFolderId);
|
|
34
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
35
|
+
permissions,
|
|
36
|
+
rwd: "w"
|
|
37
|
+
});
|
|
38
|
+
if (!canAccessFolder) {
|
|
39
|
+
return Result.fail(new EntryNotAuthorizedError());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If target folder is not ROOT, check for access
|
|
44
|
+
if (targetFolderId !== ROOT_FOLDER) {
|
|
45
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(targetFolderId);
|
|
46
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
47
|
+
permissions,
|
|
48
|
+
rwd: "w"
|
|
49
|
+
});
|
|
50
|
+
if (!canAccessFolder) {
|
|
51
|
+
return Result.fail(new EntryNotAuthorizedError());
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return this.decoratee.execute(model, id, targetFolderId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export const MoveEntryWithFlpDecorator = createDecorator({
|
|
58
|
+
abstraction: MoveEntryUseCase,
|
|
59
|
+
decorator: MoveEntryWithFlpDecoratorImpl,
|
|
60
|
+
dependencies: [FolderLevelPermissions, GetRevisionByIdUseCase]
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=MoveEntryWithFlpDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createDecorator","Result","MoveEntryUseCase","GetRevisionByIdUseCase","FolderLevelPermissions","ROOT_FOLDER","EntryNotAuthorizedError","MoveEntryWithFlpDecoratorImpl","constructor","folderLevelPermissions","getRevisionById","decoratee","execute","model","id","targetFolderId","canUseFolderLevelPermissions","entryResult","isFail","entry","value","currentFolderId","location","folderId","permissions","getFolderLevelPermissions","canAccessFolder","canAccessFolderContent","rwd","fail","MoveEntryWithFlpDecorator","abstraction","decorator","dependencies"],"sources":["MoveEntryWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { MoveEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/MoveEntry/abstractions.js\";\nimport { GetRevisionByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetRevisionById/abstractions.js\";\nimport type { CmsEntryValues, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { EntryNotAuthorizedError } from \"@webiny/api-headless-cms/domain/contentEntry/errors.js\";\n\nclass MoveEntryWithFlpDecoratorImpl implements MoveEntryUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private getRevisionById: GetRevisionByIdUseCase.Interface,\n private decoratee: MoveEntryUseCase.Interface\n ) {}\n\n public async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n targetFolderId: string\n ) {\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return this.decoratee.execute<T>(model, id, targetFolderId);\n }\n\n // First, get the entry to check its current folder\n const entryResult = await this.getRevisionById.execute<T>(model, id);\n if (entryResult.isFail()) {\n return this.decoratee.execute<T>(model, id, targetFolderId);\n }\n\n const entry = entryResult.value;\n const currentFolderId = entry?.location?.folderId || ROOT_FOLDER;\n\n // If the entry is in the same folder we are trying to move it to, just continue\n if (currentFolderId === targetFolderId) {\n return this.decoratee.execute<T>(model, id, targetFolderId);\n }\n\n // If current folder is not ROOT, check for access\n if (currentFolderId !== ROOT_FOLDER) {\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(currentFolderId);\n\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"w\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n }\n\n // If target folder is not ROOT, check for access\n if (targetFolderId !== ROOT_FOLDER) {\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(targetFolderId);\n\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"w\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n }\n\n return this.decoratee.execute<T>(model, id, targetFolderId);\n }\n}\n\nexport const MoveEntryWithFlpDecorator = createDecorator({\n abstraction: MoveEntryUseCase,\n decorator: MoveEntryWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions, GetRevisionByIdUseCase]\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,qBAAqB;AAC7D,SAASC,gBAAgB,QAAQ,0EAA0E;AAC3G,SAASC,sBAAsB,QAAQ,gFAAgF;AAEvH,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AACpB,SAASC,uBAAuB,QAAQ,wDAAwD;AAEhG,MAAMC,6BAA6B,CAAuC;EACtEC,WAAWA,CACCC,sBAAwD,EACxDC,eAAiD,EACjDC,SAAqC,EAC/C;IAAA,KAHUF,sBAAwD,GAAxDA,sBAAwD;IAAA,KACxDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,SAAqC,GAArCA,SAAqC;EAC9C;EAEH,MAAaC,OAAOA,CAChBC,KAAe,EACfC,EAAU,EACVC,cAAsB,EACxB;IACE,IAAI,CAAC,IAAI,CAACN,sBAAsB,CAACO,4BAA4B,CAAC,CAAC,EAAE;MAC7D,OAAO,IAAI,CAACL,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,EAAE,EAAEC,cAAc,CAAC;IAC/D;;IAEA;IACA,MAAME,WAAW,GAAG,MAAM,IAAI,CAACP,eAAe,CAACE,OAAO,CAAIC,KAAK,EAAEC,EAAE,CAAC;IACpE,IAAIG,WAAW,CAACC,MAAM,CAAC,CAAC,EAAE;MACtB,OAAO,IAAI,CAACP,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,EAAE,EAAEC,cAAc,CAAC;IAC/D;IAEA,MAAMI,KAAK,GAAGF,WAAW,CAACG,KAAK;IAC/B,MAAMC,eAAe,GAAGF,KAAK,EAAEG,QAAQ,EAAEC,QAAQ,IAAIlB,WAAW;;IAEhE;IACA,IAAIgB,eAAe,KAAKN,cAAc,EAAE;MACpC,OAAO,IAAI,CAACJ,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,EAAE,EAAEC,cAAc,CAAC;IAC/D;;IAEA;IACA,IAAIM,eAAe,KAAKhB,WAAW,EAAE;MACjC,MAAMmB,WAAW,GACb,MAAM,IAAI,CAACf,sBAAsB,CAACgB,yBAAyB,CAACJ,eAAe,CAAC;MAEhF,MAAMK,eAAe,GAAG,MAAM,IAAI,CAACjB,sBAAsB,CAACkB,sBAAsB,CAAC;QAC7EH,WAAW;QACXI,GAAG,EAAE;MACT,CAAC,CAAC;MAEF,IAAI,CAACF,eAAe,EAAE;QAClB,OAAOzB,MAAM,CAAC4B,IAAI,CAAC,IAAIvB,uBAAuB,CAAC,CAAC,CAAC;MACrD;IACJ;;IAEA;IACA,IAAIS,cAAc,KAAKV,WAAW,EAAE;MAChC,MAAMmB,WAAW,GACb,MAAM,IAAI,CAACf,sBAAsB,CAACgB,yBAAyB,CAACV,cAAc,CAAC;MAE/E,MAAMW,eAAe,GAAG,MAAM,IAAI,CAACjB,sBAAsB,CAACkB,sBAAsB,CAAC;QAC7EH,WAAW;QACXI,GAAG,EAAE;MACT,CAAC,CAAC;MAEF,IAAI,CAACF,eAAe,EAAE;QAClB,OAAOzB,MAAM,CAAC4B,IAAI,CAAC,IAAIvB,uBAAuB,CAAC,CAAC,CAAC;MACrD;IACJ;IAEA,OAAO,IAAI,CAACK,SAAS,CAACC,OAAO,CAAIC,KAAK,EAAEC,EAAE,EAAEC,cAAc,CAAC;EAC/D;AACJ;AAEA,OAAO,MAAMe,yBAAyB,GAAG9B,eAAe,CAAC;EACrD+B,WAAW,EAAE7B,gBAAgB;EAC7B8B,SAAS,EAAEzB,6BAA6B;EACxC0B,YAAY,EAAE,CAAC7B,sBAAsB,EAAED,sBAAsB;AACjE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js";
|
|
3
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/abstractions.js";
|
|
4
|
+
import type { CmsEntry, CmsEntryValues, CmsModel, UpdateCmsEntryInput, UpdateCmsEntryOptionsInput } from "@webiny/api-headless-cms/types/index.js";
|
|
5
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
6
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
7
|
+
declare class UpdateEntryWithFlpDecoratorImpl implements UpdateEntryUseCase.Interface {
|
|
8
|
+
private folderLevelPermissions;
|
|
9
|
+
private getRevisionById;
|
|
10
|
+
private decoratee;
|
|
11
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, getRevisionById: GetRevisionByIdUseCase.Interface, decoratee: UpdateEntryUseCase.Interface);
|
|
12
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(model: CmsModel, id: string, input: UpdateCmsEntryInput<T>, metaInput?: GenericRecord, options?: UpdateCmsEntryOptionsInput): Promise<Result<CmsEntry<T>, UpdateEntryUseCase.Error>>;
|
|
13
|
+
}
|
|
14
|
+
export declare const UpdateEntryWithFlpDecorator: typeof UpdateEntryWithFlpDecoratorImpl;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createDecorator, Result } from "@webiny/feature/api";
|
|
2
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js";
|
|
3
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/abstractions.js";
|
|
4
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
|
+
import { ROOT_FOLDER } from "../../../constants.js";
|
|
6
|
+
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors.js";
|
|
7
|
+
class UpdateEntryWithFlpDecoratorImpl {
|
|
8
|
+
constructor(folderLevelPermissions, getRevisionById, decoratee) {
|
|
9
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
10
|
+
this.getRevisionById = getRevisionById;
|
|
11
|
+
this.decoratee = decoratee;
|
|
12
|
+
}
|
|
13
|
+
async execute(model, id, input, metaInput, options) {
|
|
14
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {
|
|
15
|
+
return this.decoratee.execute(model, id, input, metaInput, options);
|
|
16
|
+
}
|
|
17
|
+
const entryResult = await this.getRevisionById.execute(model, id);
|
|
18
|
+
if (entryResult.isFail()) {
|
|
19
|
+
return this.decoratee.execute(model, id, input, metaInput, options);
|
|
20
|
+
}
|
|
21
|
+
const entry = entryResult.value;
|
|
22
|
+
const folderId = entry?.location?.folderId;
|
|
23
|
+
if (!folderId || folderId === ROOT_FOLDER) {
|
|
24
|
+
return this.decoratee.execute(model, id, input, metaInput, options);
|
|
25
|
+
}
|
|
26
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
27
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
28
|
+
permissions,
|
|
29
|
+
rwd: "w"
|
|
30
|
+
});
|
|
31
|
+
if (!canAccessFolder) {
|
|
32
|
+
return Result.fail(new EntryNotAuthorizedError());
|
|
33
|
+
}
|
|
34
|
+
return this.decoratee.execute(model, id, input, metaInput, options);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export const UpdateEntryWithFlpDecorator = createDecorator({
|
|
38
|
+
abstraction: UpdateEntryUseCase,
|
|
39
|
+
decorator: UpdateEntryWithFlpDecoratorImpl,
|
|
40
|
+
dependencies: [FolderLevelPermissions, GetRevisionByIdUseCase]
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=UpdateEntryWithFlpDecorator.js.map
|