@webiny/api-aco 5.43.0-beta.0 → 5.43.0-beta.2
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/apps/AcoApp.js +4 -4
- package/apps/AcoApp.js.map +1 -1
- package/constants.d.ts +3 -0
- package/constants.js +11 -0
- package/constants.js.map +1 -0
- package/createAcoContext.d.ts +3 -1
- package/createAcoContext.js +13 -99
- package/createAcoContext.js.map +1 -1
- package/createAcoHooks.js +2 -0
- package/createAcoHooks.js.map +1 -1
- package/createAcoStorageOperations.d.ts +2 -0
- package/createAcoStorageOperations.js +5 -3
- package/createAcoStorageOperations.js.map +1 -1
- package/createAcoTasks.d.ts +1 -0
- package/createAcoTasks.js +13 -0
- package/createAcoTasks.js.map +1 -0
- package/filter/filter.crud.js +7 -7
- package/filter/filter.crud.js.map +1 -1
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.d.ts +7 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.js +17 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/GetIdentityGatewayFromContext.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.d.ts +4 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.js +7 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/IGetIdentityGateway.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.js +29 -0
- package/flp/FolderLevelPermissions/gateways/GetIdentityGateway/index.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.d.ts +7 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.js +17 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/GetWcpGatewayFromContext.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.d.ts +4 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.js +7 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/IGetWcpGateway.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.js +29 -0
- package/flp/FolderLevelPermissions/gateways/GetWcpGateway/index.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.d.ts +3 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.js +7 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IIsAuthorizationEnabledGateway.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.d.ts +7 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.js +17 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/IsAuthorizationEnabledGatewayFromContext.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.js +29 -0
- package/flp/FolderLevelPermissions/gateways/IsAuthorizationEnabled/index.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.d.ts +4 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.js +7 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/IListIdentityTeamsGateway.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.d.ts +7 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.js +39 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/ListIdentityTeamsGatewayFromContext.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.js +29 -0
- package/flp/FolderLevelPermissions/gateways/ListIdentityTeamsGateway/index.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.d.ts +4 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.js +7 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/IListPermissionsGateway.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.d.ts +7 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.js +17 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/ListPermissionsGatewayFromContext.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.js +29 -0
- package/flp/FolderLevelPermissions/gateways/ListPermissionsGateway/index.js.map +1 -0
- package/flp/FolderLevelPermissions/gateways/index.d.ts +5 -0
- package/flp/FolderLevelPermissions/gateways/index.js +62 -0
- package/flp/FolderLevelPermissions/gateways/index.js.map +1 -0
- package/flp/FolderLevelPermissions/index.d.ts +33 -0
- package/flp/FolderLevelPermissions/index.js +116 -0
- package/flp/FolderLevelPermissions/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +7 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +48 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.d.ts +9 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +7 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +41 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.d.ts +8 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.d.ts +4 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +14 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.d.ts +3 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.d.ts +9 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.js +34 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/CanUseFolderLevelPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.d.ts +3 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/ICanUseFolderPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CanUseFolderLevelPermissions/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.d.ts +7 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.js +17 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/CanUseTeams.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.d.ts +3 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/ICanUseTeams.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CanUseTeams/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.d.ts +5 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +14 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.d.ts +4 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +7 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +10 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +53 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +10 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +40 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.d.ts +4 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +7 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.d.ts +3 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +40 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.d.ts +7 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.js +17 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/GetFolderPermission.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.d.ts +4 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.js +7 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/IGetFolderPermission.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.js +29 -0
- package/flp/FolderLevelPermissions/useCases/GetFolderPermission/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.d.ts +4 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.js +7 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/IListFolderPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.d.ts +7 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.js +17 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/ListFolderPermissions.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.d.ts +2 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.js +18 -0
- package/flp/FolderLevelPermissions/useCases/ListFolderPermissions/index.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/index.d.ts +9 -0
- package/flp/FolderLevelPermissions/useCases/index.js +106 -0
- package/flp/FolderLevelPermissions/useCases/index.js.map +1 -0
- package/flp/flp.crud.d.ts +9 -0
- package/flp/flp.crud.js +172 -0
- package/flp/flp.crud.js.map +1 -0
- package/flp/flp.so.d.ts +26 -0
- package/flp/flp.so.js +304 -0
- package/flp/flp.so.js.map +1 -0
- package/flp/flp.types.d.ts +159 -0
- package/flp/flp.types.js +7 -0
- package/flp/flp.types.js.map +1 -0
- package/flp/hooks/index.d.ts +2 -0
- package/flp/hooks/index.js +17 -0
- package/flp/hooks/index.js.map +1 -0
- package/flp/hooks/onFolderAfterCreateFlp.hook.d.ts +2 -0
- package/flp/hooks/onFolderAfterCreateFlp.hook.js +37 -0
- package/flp/hooks/onFolderAfterCreateFlp.hook.js.map +1 -0
- package/flp/hooks/onFolderAfterDeleteFlp.hook.d.ts +2 -0
- package/flp/hooks/onFolderAfterDeleteFlp.hook.js +37 -0
- package/flp/hooks/onFolderAfterDeleteFlp.hook.js.map +1 -0
- package/flp/hooks/onFolderAfterUpdateFlp.hook.d.ts +2 -0
- package/flp/hooks/onFolderAfterUpdateFlp.hook.js +39 -0
- package/flp/hooks/onFolderAfterUpdateFlp.hook.js.map +1 -0
- package/flp/index.d.ts +5 -0
- package/flp/index.js +62 -0
- package/flp/index.js.map +1 -0
- package/flp/tasks/createFlp.task.d.ts +2 -0
- package/flp/tasks/createFlp.task.js +49 -0
- package/flp/tasks/createFlp.task.js.map +1 -0
- package/flp/tasks/deleteFlp.task.d.ts +2 -0
- package/flp/tasks/deleteFlp.task.js +49 -0
- package/flp/tasks/deleteFlp.task.js.map +1 -0
- package/flp/tasks/index.d.ts +5 -0
- package/flp/tasks/index.js +20 -0
- package/flp/tasks/index.js.map +1 -0
- package/flp/tasks/syncFlp.task.d.ts +2 -0
- package/flp/tasks/syncFlp.task.js +126 -0
- package/flp/tasks/syncFlp.task.js.map +1 -0
- package/flp/tasks/updateFlp.task.d.ts +2 -0
- package/flp/tasks/updateFlp.task.js +55 -0
- package/flp/tasks/updateFlp.task.js.map +1 -0
- package/flp/useCases/CreateFlp.d.ts +7 -0
- package/flp/useCases/CreateFlp.js +52 -0
- package/flp/useCases/CreateFlp.js.map +1 -0
- package/flp/useCases/DeleteFlp.d.ts +6 -0
- package/flp/useCases/DeleteFlp.js +30 -0
- package/flp/useCases/DeleteFlp.js.map +1 -0
- package/flp/useCases/Path.d.ts +3 -0
- package/flp/useCases/Path.js +18 -0
- package/flp/useCases/Path.js.map +1 -0
- package/flp/useCases/Permissions.d.ts +4 -0
- package/flp/useCases/Permissions.js +38 -0
- package/flp/useCases/Permissions.js.map +1 -0
- package/flp/useCases/UpdateFlp.d.ts +25 -0
- package/flp/useCases/UpdateFlp.js +182 -0
- package/flp/useCases/UpdateFlp.js.map +1 -0
- package/flp/useCases/index.d.ts +3 -0
- package/flp/useCases/index.js +40 -0
- package/flp/useCases/index.js.map +1 -0
- package/folder/createFolderTypeDefs.js +13 -2
- package/folder/createFolderTypeDefs.js.map +1 -1
- package/folder/folder.crud.d.ts +3 -6
- package/folder/folder.crud.js +90 -231
- package/folder/folder.crud.js.map +1 -1
- package/folder/folder.gql.js +30 -8
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.model.js +3 -0
- package/folder/folder.model.js.map +1 -1
- package/folder/folder.so.js +4 -1
- package/folder/folder.so.js.map +1 -1
- package/folder/folder.types.d.ts +17 -3
- package/folder/folder.types.js.map +1 -1
- package/folder/useCases/CreateFolder/CreateFolder.d.ts +7 -0
- package/folder/useCases/CreateFolder/CreateFolder.js +19 -0
- package/folder/useCases/CreateFolder/CreateFolder.js.map +1 -0
- package/folder/useCases/CreateFolder/CreateFolderWithEvents.d.ts +9 -0
- package/folder/useCases/CreateFolder/CreateFolderWithEvents.js +25 -0
- package/folder/useCases/CreateFolder/CreateFolderWithEvents.js.map +1 -0
- package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.d.ts +24 -0
- package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.js +39 -0
- package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/CreateFolder/ICreateFolder.d.ts +4 -0
- package/folder/useCases/CreateFolder/ICreateFolder.js +7 -0
- package/folder/useCases/CreateFolder/ICreateFolder.js.map +1 -0
- package/folder/useCases/CreateFolder/index.d.ts +17 -0
- package/folder/useCases/CreateFolder/index.js +20 -0
- package/folder/useCases/CreateFolder/index.js.map +1 -0
- package/folder/useCases/DeleteFolder/DeleteFolder.d.ts +7 -0
- package/folder/useCases/DeleteFolder/DeleteFolder.js +18 -0
- package/folder/useCases/DeleteFolder/DeleteFolder.js.map +1 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.d.ts +10 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.js +29 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithEvents.js.map +1 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.d.ts +9 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.js +24 -0
- package/folder/useCases/DeleteFolder/DeleteFolderWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/DeleteFolder/IDeleteFolder.d.ts +4 -0
- package/folder/useCases/DeleteFolder/IDeleteFolder.js +7 -0
- package/folder/useCases/DeleteFolder/IDeleteFolder.js.map +1 -0
- package/folder/useCases/DeleteFolder/index.d.ts +18 -0
- package/folder/useCases/DeleteFolder/index.js +20 -0
- package/folder/useCases/DeleteFolder/index.js.map +1 -0
- package/folder/useCases/GetAncestors/GetAncestors.d.ts +5 -0
- package/folder/useCases/GetAncestors/GetAncestors.js +57 -0
- package/folder/useCases/GetAncestors/GetAncestors.js.map +1 -0
- package/folder/useCases/GetAncestors/IGetAncestors.d.ts +8 -0
- package/folder/useCases/GetAncestors/IGetAncestors.js +7 -0
- package/folder/useCases/GetAncestors/IGetAncestors.js.map +1 -0
- package/folder/useCases/GetAncestors/index.d.ts +4 -0
- package/folder/useCases/GetAncestors/index.js +16 -0
- package/folder/useCases/GetAncestors/index.js.map +1 -0
- package/folder/useCases/GetFolder/GetFolder.d.ts +7 -0
- package/folder/useCases/GetFolder/GetFolder.js +17 -0
- package/folder/useCases/GetFolder/GetFolder.js.map +1 -0
- package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.d.ts +24 -0
- package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.js +33 -0
- package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/GetFolder/IGetFolder.d.ts +4 -0
- package/folder/useCases/GetFolder/IGetFolder.js +7 -0
- package/folder/useCases/GetFolder/IGetFolder.js.map +1 -0
- package/folder/useCases/GetFolder/index.d.ts +13 -0
- package/folder/useCases/GetFolder/index.js +19 -0
- package/folder/useCases/GetFolder/index.js.map +1 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.d.ts +11 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.js +63 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchy.js.map +1 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.d.ts +17 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.js +59 -0
- package/folder/useCases/GetFolderHierarchy/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.d.ts +4 -0
- package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.js +7 -0
- package/folder/useCases/GetFolderHierarchy/IGetFolderHierarchy.js.map +1 -0
- package/folder/useCases/GetFolderHierarchy/index.d.ts +12 -0
- package/folder/useCases/GetFolderHierarchy/index.js +18 -0
- package/folder/useCases/GetFolderHierarchy/index.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.d.ts +4 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.js +7 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListAdminUsersGateway.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.d.ts +4 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.js +7 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListFolderLevelPermissionsTargets.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.d.ts +4 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.js +7 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/IListTeamsGateway.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.d.ts +7 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.js +23 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListAdminUsersGatewayFromContext.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.d.ts +13 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.js +60 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargets.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.d.ts +7 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.js +22 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/ListTeamsGatewayFromContext.js.map +1 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/index.d.ts +9 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/index.js +20 -0
- package/folder/useCases/ListFolderLevelPermissionsTargets/index.js.map +1 -0
- package/folder/useCases/ListFolders/IListFolders.d.ts +5 -0
- package/folder/useCases/ListFolders/IListFolders.js +7 -0
- package/folder/useCases/ListFolders/IListFolders.js.map +1 -0
- package/folder/useCases/ListFolders/ListFolders.d.ts +8 -0
- package/folder/useCases/ListFolders/ListFolders.js +17 -0
- package/folder/useCases/ListFolders/ListFolders.js.map +1 -0
- package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.d.ts +14 -0
- package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.js +67 -0
- package/folder/useCases/ListFolders/ListFoldersWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/ListFolders/index.d.ts +13 -0
- package/folder/useCases/ListFolders/index.js +19 -0
- package/folder/useCases/ListFolders/index.js.map +1 -0
- package/folder/useCases/UpdateFolder/IUpdateFolder.d.ts +4 -0
- package/folder/useCases/UpdateFolder/IUpdateFolder.js +7 -0
- package/folder/useCases/UpdateFolder/IUpdateFolder.js.map +1 -0
- package/folder/useCases/UpdateFolder/UpdateFolder.d.ts +7 -0
- package/folder/useCases/UpdateFolder/UpdateFolder.js +20 -0
- package/folder/useCases/UpdateFolder/UpdateFolder.js.map +1 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.d.ts +10 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.js +38 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithEvents.js.map +1 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.d.ts +25 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js +78 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.js.map +1 -0
- package/folder/useCases/UpdateFolder/index.d.ts +18 -0
- package/folder/useCases/UpdateFolder/index.js +20 -0
- package/folder/useCases/UpdateFolder/index.js.map +1 -0
- package/folder/useCases/index.d.ts +8 -0
- package/folder/useCases/index.js +95 -0
- package/folder/useCases/index.js.map +1 -0
- package/index.d.ts +3 -1
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/package.json +28 -26
- package/record/record.crud.js +10 -10
- package/record/record.crud.js.map +1 -1
- package/record/record.so.js +2 -1
- package/record/record.so.js.map +1 -1
- package/types.d.ts +17 -8
- package/types.js +12 -0
- package/types.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.js +41 -65
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
- package/utils/decorators/FilterEntriesByFolderFactory.d.ts +7 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js +30 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -0
- package/utils/decorators/ListEntriesFactory.d.ts +15 -0
- package/utils/decorators/ListEntriesFactory.js +107 -0
- package/utils/decorators/ListEntriesFactory.js.map +1 -0
- package/utils/decorators/decorateIfModelAuthorizationEnabled.js +7 -0
- package/utils/decorators/decorateIfModelAuthorizationEnabled.js.map +1 -1
- package/utils/decorators/hasRootFolderId.d.ts +7 -0
- package/utils/decorators/hasRootFolderId.js +27 -0
- package/utils/decorators/hasRootFolderId.js.map +1 -0
- package/utils/pickEntryFieldValues.js +1 -1
- package/utils/pickEntryFieldValues.js.map +1 -1
- package/utils/FolderLevelPermissions.d.ts +0 -75
- package/utils/FolderLevelPermissions.js +0 -390
- package/utils/FolderLevelPermissions.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/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
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _CreateFlp = require("./CreateFlp");
|
|
7
|
+
Object.keys(_CreateFlp).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _CreateFlp[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _CreateFlp[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _DeleteFlp = require("./DeleteFlp");
|
|
18
|
+
Object.keys(_DeleteFlp).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _DeleteFlp[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _DeleteFlp[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _UpdateFlp = require("./UpdateFlp");
|
|
29
|
+
Object.keys(_UpdateFlp).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _UpdateFlp[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _UpdateFlp[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_CreateFlp","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_DeleteFlp","_UpdateFlp"],"sources":["index.ts"],"sourcesContent":["export * from \"./CreateFlp\";\nexport * from \"./DeleteFlp\";\nexport * from \"./UpdateFlp\";\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,UAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,UAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,UAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,UAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -95,7 +95,8 @@ const createFolderTypeDefs = params => {
|
|
|
95
95
|
|
|
96
96
|
input FoldersListWhereInput {
|
|
97
97
|
type: String!
|
|
98
|
-
parentId:
|
|
98
|
+
parentId: ID
|
|
99
|
+
parentId_in: [ID]
|
|
99
100
|
createdBy: ID
|
|
100
101
|
}
|
|
101
102
|
|
|
@@ -114,6 +115,16 @@ const createFolderTypeDefs = params => {
|
|
|
114
115
|
data: CompressedResponse
|
|
115
116
|
error: AcoError
|
|
116
117
|
}
|
|
118
|
+
|
|
119
|
+
type FoldersHierarchyData {
|
|
120
|
+
parents: [Folder]
|
|
121
|
+
siblings: [Folder]
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
type FoldersHierarchyResponse {
|
|
125
|
+
data: FoldersHierarchyData
|
|
126
|
+
error: AcoError
|
|
127
|
+
}
|
|
117
128
|
|
|
118
129
|
type FolderLevelPermissionsTarget {
|
|
119
130
|
id: ID!
|
|
@@ -153,7 +164,7 @@ const createFolderTypeDefs = params => {
|
|
|
153
164
|
after: String
|
|
154
165
|
sort: AcoSort
|
|
155
166
|
): FoldersListCompressedResponse
|
|
156
|
-
|
|
167
|
+
getFolderHierarchy(type: String!, id: ID!): FoldersHierarchyResponse
|
|
157
168
|
listFolderLevelPermissionsTargets: FolderLevelPermissionsTargetsListResponse
|
|
158
169
|
}
|
|
159
170
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_renderFields","require","_renderInputFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFolderTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","map","f","typeDefs","join","exports"],"sources":["createFolderTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\n\nexport interface CreateFolderTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFolderTypeDefs = (params: CreateFolderTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n \n type CompressedResponse {\n compression: String\n value: String\n }\n\n type Folder {\n id: ID!\n # Tells us if the current user can manage folder structure.\n canManageStructure: Boolean\n\n # Tells us if the current user can manage folder permissions.\n canManagePermissions: Boolean\n\n # Tells us if the current user can manage folder content.\n canManageContent: Boolean\n\n # Tells us if the folder contains non-inherited permissions.\n hasNonInheritedPermissions: Boolean\n\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: AcoUser\n modifiedBy: AcoUser\n savedBy: AcoUser\n \n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FolderCreateInput {\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FolderUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FoldersListWhereInput {\n type: String!\n parentId:
|
|
1
|
+
{"version":3,"names":["_renderFields","require","_renderInputFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFolderTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","map","f","typeDefs","join","exports"],"sources":["createFolderTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\n\nexport interface CreateFolderTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFolderTypeDefs = (params: CreateFolderTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n \n type CompressedResponse {\n compression: String\n value: String\n }\n\n type Folder {\n id: ID!\n # Tells us if the current user can manage folder structure.\n canManageStructure: Boolean\n\n # Tells us if the current user can manage folder permissions.\n canManagePermissions: Boolean\n\n # Tells us if the current user can manage folder content.\n canManageContent: Boolean\n\n # Tells us if the folder contains non-inherited permissions.\n hasNonInheritedPermissions: Boolean\n\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: AcoUser\n modifiedBy: AcoUser\n savedBy: AcoUser\n \n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FolderCreateInput {\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FolderUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n \n input FoldersListWhereInput {\n type: String!\n parentId: ID\n parentId_in: [ID]\n createdBy: ID\n }\n \n type FolderResponse {\n data: Folder\n error: AcoError\n }\n\n type FoldersListResponse {\n data: [Folder]\n error: AcoError\n meta: AcoMeta\n }\n\n type FoldersListCompressedResponse {\n data: CompressedResponse\n error: AcoError\n }\n \n type FoldersHierarchyData {\n parents: [Folder]\n siblings: [Folder]\n }\n\n type FoldersHierarchyResponse {\n data: FoldersHierarchyData\n error: AcoError\n }\n\n type FolderLevelPermissionsTarget {\n id: ID!\n type: String!\n target: ID!\n name: String!\n meta: JSON\n }\n\n type FolderLevelPermissionsTargetsListMeta {\n totalCount: Int!\n }\n\n type FolderLevelPermissionsTargetsListResponse {\n data: [FolderLevelPermissionsTarget]\n meta: FolderLevelPermissionsTargetsListMeta\n error: AcoError\n }\n \n type FolderModelResponse {\n data: JSON\n error: AcoError\n }\n\n extend type AcoQuery {\n getFolderModel: FolderModelResponse!\n getFolder(id: ID!): FolderResponse\n listFolders(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListResponse\n listFoldersCompressed(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListCompressedResponse\n getFolderHierarchy(type: String!, id: ID!): FoldersHierarchyResponse\n listFolderLevelPermissionsTargets: FolderLevelPermissionsTargetsListResponse\n }\n\n extend type AcoMutation {\n createFolder(data: FolderCreateInput!): FolderResponse\n updateFolder(id: ID!, data: FolderUpdateInput!): FolderResponse\n deleteFolder(id: ID!): AcoBooleanResponse\n }\n \n extend type AcoFolder_Permissions {\n inheritedFrom: ID\n }\n \n extend input AcoFolder_PermissionsInput {\n inheritedFrom: ID\n }\n `;\n};\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAQA,MAAME,6BAA6B,GAAIC,KAAoB,IAAK;EAC5D,IAAIA,KAAK,CAACC,UAAU,EAAE;IAClBD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,CAACC,MAAM,CAACD,UAAU,IAAIA,UAAU,CAACE,IAAI,KAAK,UAAU,CAAC;EAC5F;EACA,IAAIH,KAAK,CAACI,cAAc,EAAE;IACtBJ,KAAK,CAACI,cAAc,GAAGJ,KAAK,CAACI,cAAc,CAACF,MAAM,CAACG,CAAC,IAAIA,CAAC,CAACF,IAAI,KAAK,UAAU,CAAC;EAClF;EACA,OAAOH,KAAK;AAChB,CAAC;AAED,MAAMM,kBAAkB,GAAIC,MAAuB,IAAsB;EACrE,OAAOA,MAAM,CAACC,MAAM,CAAkB,CAACC,UAAU,EAAET,KAAK,KAAK;IACzDS,UAAU,CAACC,IAAI,CAACX,6BAA6B,CAAC;MAAE,GAAGC;IAAM,CAAC,CAAC,CAAC;IAC5D,OAAOS,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAEM,MAAME,oBAAoB,GAAIC,MAAkC,IAAa;EAChF,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO,EAAEC;EAAiB,CAAC,GAAGJ,MAAM;EAC3D,MAAM;IAAEL;EAAO,CAAC,GAAGM,KAAK;EAExB,MAAMI,UAAU,GAAG,IAAAC,0BAAY,EAAC;IAC5BJ,MAAM;IACND,KAAK;IACLN,MAAM;IACNY,IAAI,EAAE,QAAQ;IACdH;EACJ,CAAC,CAAC;EACF,MAAMI,iBAAiB,GAAG,IAAAC,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM;IACNS;EACJ,CAAC,CAAC;EACF,MAAMM,iBAAiB,GAAG,IAAAD,oCAAiB,EAAC;IACxCP,MAAM;IACND,KAAK;IACLN,MAAM,EAAED,kBAAkB,CAACC,MAAM,CAAC;IAClCS;EACJ,CAAC,CAAC;EAEF,OAAO,aAAc;AACzB,UAAUC,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcT,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AACtD;AACA;AACA,UAAUN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA;AACA,eAAeN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC9D;AACA;AACA;AACA,cAAcJ,iBAAiB,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACjB,MAAM,CAAC,CAACmB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AAACC,OAAA,CAAAhB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
package/folder/folder.crud.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { CreateAcoParams } from "../types";
|
|
2
1
|
import { AcoFolderCrud } from "./folder.types";
|
|
3
|
-
import {
|
|
4
|
-
import { Team } from "@webiny/api-security/types";
|
|
2
|
+
import { type AcoContext, CreateAcoParams } from "../types";
|
|
5
3
|
interface CreateFolderCrudMethodsParams extends CreateAcoParams {
|
|
6
|
-
|
|
7
|
-
listTeams: () => Promise<Team[]>;
|
|
4
|
+
context: AcoContext;
|
|
8
5
|
}
|
|
9
|
-
export declare const createFolderCrudMethods: ({ storageOperations, folderLevelPermissions,
|
|
6
|
+
export declare const createFolderCrudMethods: ({ storageOperations, folderLevelPermissions, context }: CreateFolderCrudMethodsParams) => AcoFolderCrud;
|
|
10
7
|
export {};
|
package/folder/folder.crud.js
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.createFolderCrudMethods = void 0;
|
|
8
7
|
var _pubsub = require("@webiny/pubsub");
|
|
9
|
-
var
|
|
10
|
-
var _getFolderAndItsAncestors = require("../utils/getFolderAndItsAncestors");
|
|
11
|
-
var _NotAuthorizedError = _interopRequireDefault(require("@webiny/api-security/NotAuthorizedError"));
|
|
12
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
8
|
+
var _useCases = require("./useCases");
|
|
13
9
|
const FIXED_FOLDER_LISTING_LIMIT = 10_000;
|
|
14
10
|
const createFolderCrudMethods = ({
|
|
15
11
|
storageOperations,
|
|
16
12
|
folderLevelPermissions,
|
|
17
|
-
|
|
18
|
-
listTeams
|
|
13
|
+
context
|
|
19
14
|
}) => {
|
|
20
15
|
// create
|
|
21
16
|
const onFolderBeforeCreate = (0, _pubsub.createTopic)("aco.onFolderBeforeCreate");
|
|
@@ -26,6 +21,67 @@ const createFolderCrudMethods = ({
|
|
|
26
21
|
// delete
|
|
27
22
|
const onFolderBeforeDelete = (0, _pubsub.createTopic)("aco.onFolderBeforeDelete");
|
|
28
23
|
const onFolderAfterDelete = (0, _pubsub.createTopic)("aco.onFolderAfterDelete");
|
|
24
|
+
const {
|
|
25
|
+
getFolderUseCase,
|
|
26
|
+
getFolderUseCaseWithoutPermissions
|
|
27
|
+
} = (0, _useCases.getGetFolderUseCase)({
|
|
28
|
+
getOperation: storageOperations.folder.getFolder,
|
|
29
|
+
folderLevelPermissions
|
|
30
|
+
});
|
|
31
|
+
const {
|
|
32
|
+
listFoldersUseCase,
|
|
33
|
+
listFoldersUseCaseWithoutPermissions
|
|
34
|
+
} = (0, _useCases.getListFoldersUseCases)({
|
|
35
|
+
listOperation: storageOperations.folder.listFolders,
|
|
36
|
+
folderLevelPermissions
|
|
37
|
+
});
|
|
38
|
+
const {
|
|
39
|
+
getFolderHierarchyUseCase
|
|
40
|
+
} = (0, _useCases.getGetFolderHierarchyUseCases)({
|
|
41
|
+
listOperation: storageOperations.folder.listFolders,
|
|
42
|
+
getOperation: storageOperations.folder.getFolder,
|
|
43
|
+
folderLevelPermissions
|
|
44
|
+
});
|
|
45
|
+
const {
|
|
46
|
+
createFolderUseCase
|
|
47
|
+
} = (0, _useCases.getCreateFolderUseCases)({
|
|
48
|
+
createOperation: storageOperations.folder.createFolder,
|
|
49
|
+
folderLevelPermissions,
|
|
50
|
+
topics: {
|
|
51
|
+
onFolderAfterCreate,
|
|
52
|
+
onFolderBeforeCreate
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const {
|
|
56
|
+
updateFolderUseCase
|
|
57
|
+
} = (0, _useCases.getUpdateFolderUseCase)({
|
|
58
|
+
updateOperation: storageOperations.folder.updateFolder,
|
|
59
|
+
getOperation: storageOperations.folder.getFolder,
|
|
60
|
+
folderLevelPermissions,
|
|
61
|
+
topics: {
|
|
62
|
+
onFolderAfterUpdate,
|
|
63
|
+
onFolderBeforeUpdate
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const {
|
|
67
|
+
deleteFolderUseCase
|
|
68
|
+
} = (0, _useCases.getDeleteFolderUseCases)({
|
|
69
|
+
deleteOperation: storageOperations.folder.deleteFolder,
|
|
70
|
+
getOperation: storageOperations.folder.getFolder,
|
|
71
|
+
folderLevelPermissions,
|
|
72
|
+
topics: {
|
|
73
|
+
onFolderBeforeDelete,
|
|
74
|
+
onFolderAfterDelete
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const {
|
|
78
|
+
getAncestorsUseCase
|
|
79
|
+
} = (0, _useCases.getGetAncestors)();
|
|
80
|
+
const {
|
|
81
|
+
listFolderLevelPermissionsTargetsUseCase
|
|
82
|
+
} = (0, _useCases.getListFolderLevelPermissionsTargets)({
|
|
83
|
+
context
|
|
84
|
+
});
|
|
29
85
|
return {
|
|
30
86
|
/**
|
|
31
87
|
* Lifecycle events
|
|
@@ -36,202 +92,46 @@ const createFolderCrudMethods = ({
|
|
|
36
92
|
onFolderAfterUpdate,
|
|
37
93
|
onFolderBeforeDelete,
|
|
38
94
|
onFolderAfterDelete,
|
|
39
|
-
async get(id) {
|
|
40
|
-
|
|
95
|
+
async get(id, disablePermissions) {
|
|
96
|
+
// If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.
|
|
97
|
+
if (disablePermissions) {
|
|
98
|
+
return await getFolderUseCaseWithoutPermissions.execute({
|
|
99
|
+
id
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return await getFolderUseCase.execute({
|
|
41
103
|
id
|
|
42
104
|
});
|
|
43
|
-
await folderLevelPermissions.ensureCanAccessFolder({
|
|
44
|
-
folder,
|
|
45
|
-
rwd: "r"
|
|
46
|
-
});
|
|
47
|
-
await folderLevelPermissions.assignFolderPermissions(folder);
|
|
48
|
-
return folder;
|
|
49
105
|
},
|
|
50
|
-
async list(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// Filter by parent ID.
|
|
58
|
-
return filteredFolders.filter(folder => folder.parentId === params.where.parentId);
|
|
59
|
-
}
|
|
60
|
-
return filteredFolders;
|
|
61
|
-
});
|
|
62
|
-
const totalCount = filteredFolders.length;
|
|
63
|
-
let hasMoreItems = false;
|
|
64
|
-
let cursor = null;
|
|
65
|
-
|
|
66
|
-
// Apply cursor/limit params.
|
|
67
|
-
if (params.after) {
|
|
68
|
-
const afterListItemIndex = filteredFolders.findIndex(folder => folder.id === params.after);
|
|
69
|
-
if (afterListItemIndex >= 0) {
|
|
70
|
-
// Remove all items below the "after" item.
|
|
71
|
-
filteredFolders.splice(0, afterListItemIndex + 1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
hasMoreItems = !!params.limit && filteredFolders.length > params.limit;
|
|
75
|
-
if (hasMoreItems) {
|
|
76
|
-
cursor = filteredFolders[params.limit - 1]?.id || null;
|
|
77
|
-
filteredFolders.splice(params.limit);
|
|
106
|
+
async list({
|
|
107
|
+
disablePermissions,
|
|
108
|
+
...params
|
|
109
|
+
}) {
|
|
110
|
+
// If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.
|
|
111
|
+
if (disablePermissions) {
|
|
112
|
+
return await listFoldersUseCaseWithoutPermissions.execute(params);
|
|
78
113
|
}
|
|
79
|
-
return
|
|
80
|
-
totalCount,
|
|
81
|
-
hasMoreItems,
|
|
82
|
-
cursor
|
|
83
|
-
}];
|
|
114
|
+
return await listFoldersUseCase.execute(params);
|
|
84
115
|
},
|
|
85
116
|
async listAll(params) {
|
|
86
|
-
return this.list({
|
|
117
|
+
return await this.list({
|
|
87
118
|
...params,
|
|
88
119
|
limit: FIXED_FOLDER_LISTING_LIMIT
|
|
89
120
|
});
|
|
90
121
|
},
|
|
91
|
-
async
|
|
92
|
-
|
|
93
|
-
if (data.parentId) {
|
|
94
|
-
const parentFolder = await storageOperations.getFolder({
|
|
95
|
-
id: data.parentId
|
|
96
|
-
});
|
|
97
|
-
canCreateFolder = await folderLevelPermissions.canAccessFolder({
|
|
98
|
-
folder: parentFolder,
|
|
99
|
-
rwd: "w"
|
|
100
|
-
});
|
|
101
|
-
} else {
|
|
102
|
-
canCreateFolder = await folderLevelPermissions.canCreateFolderInRoot();
|
|
103
|
-
}
|
|
104
|
-
if (!canCreateFolder) {
|
|
105
|
-
throw new _NotAuthorizedError.default();
|
|
106
|
-
}
|
|
107
|
-
await onFolderBeforeCreate.publish({
|
|
108
|
-
input: data
|
|
109
|
-
});
|
|
110
|
-
const folder = await storageOperations.createFolder({
|
|
111
|
-
data
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// We need to add the newly created folder to FLP's internal cache. Note that we're also
|
|
115
|
-
// invalidating the permissions list cache for the folder type. We cannot rely on the cache
|
|
116
|
-
// to check if the user has access, because the cache is no longer up to date.
|
|
117
|
-
folderLevelPermissions.invalidateFoldersPermissionsListCache(folder.type);
|
|
118
|
-
folderLevelPermissions.addFolderToCache(folder.type, folder);
|
|
119
|
-
|
|
120
|
-
// With caches updated and invalidated, we can now assign correct permissions to the folder.
|
|
121
|
-
await folderLevelPermissions.assignFolderPermissions(folder);
|
|
122
|
-
await onFolderAfterCreate.publish({
|
|
123
|
-
folder
|
|
124
|
-
});
|
|
125
|
-
return folder;
|
|
122
|
+
async getFolderHierarchy(params) {
|
|
123
|
+
return await getFolderHierarchyUseCase.execute(params);
|
|
126
124
|
},
|
|
127
|
-
async
|
|
128
|
-
|
|
129
|
-
id
|
|
130
|
-
});
|
|
131
|
-
const canUpdateFolder = await folderLevelPermissions.canAccessFolder({
|
|
132
|
-
folder: original,
|
|
133
|
-
rwd: "w"
|
|
134
|
-
});
|
|
135
|
-
if (!canUpdateFolder) {
|
|
136
|
-
throw new _NotAuthorizedError.default();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Validate data.
|
|
140
|
-
if (Array.isArray(data.permissions)) {
|
|
141
|
-
data.permissions.forEach(permission => {
|
|
142
|
-
const targetIsValid = permission.target.startsWith("admin:") || permission.target.startsWith("team:");
|
|
143
|
-
if (!targetIsValid) {
|
|
144
|
-
throw new Error(`Permission target "${permission.target}" is not valid.`);
|
|
145
|
-
}
|
|
146
|
-
if (permission.inheritedFrom) {
|
|
147
|
-
throw new Error(`Permission "inheritedFrom" cannot be set manually.`);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Parent change is not allowed if the user doesn't have access to the new parent.
|
|
153
|
-
if (data.parentId && data.parentId !== original.parentId) {
|
|
154
|
-
try {
|
|
155
|
-
// Getting the parent folder will throw an error if the user doesn't have access.
|
|
156
|
-
await this.get(data.parentId);
|
|
157
|
-
} catch (e) {
|
|
158
|
-
if (e instanceof _NotAuthorizedError.default) {
|
|
159
|
-
throw new _error.default(`Cannot move folder to a new parent because you don't have access to the new parent.`, "CANNOT_MOVE_FOLDER_TO_NEW_PARENT");
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// If we didn't receive the expected error, we still want to throw it.
|
|
163
|
-
throw e;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Finally, we check if the user would lose access to the folder by making the update.
|
|
168
|
-
// In order to do this, we need to make a couple of steps. First, we're updating FLP's
|
|
169
|
-
// internal cache with new folder data. Then, we're invalidating the permissions list
|
|
170
|
-
// cache for the folder type. We cannot rely on the cache to check if the user still
|
|
171
|
-
// has access, because the cache might no longer be up-to-date.
|
|
172
|
-
folderLevelPermissions.updateFoldersCache(original.type, cachedFolder => {
|
|
173
|
-
if (cachedFolder.id !== id) {
|
|
174
|
-
return cachedFolder;
|
|
175
|
-
}
|
|
176
|
-
return {
|
|
177
|
-
...cachedFolder,
|
|
178
|
-
...data
|
|
179
|
-
};
|
|
180
|
-
});
|
|
181
|
-
folderLevelPermissions.invalidateFoldersPermissionsListCache(original.type);
|
|
182
|
-
|
|
183
|
-
// With caches updated and invalidated, we can now check if the user still
|
|
184
|
-
// has access to the folder.
|
|
185
|
-
const stillHasAccess = await folderLevelPermissions.canAccessFolder({
|
|
186
|
-
folder: {
|
|
187
|
-
id,
|
|
188
|
-
type: original.type
|
|
189
|
-
},
|
|
190
|
-
rwd: "w"
|
|
191
|
-
});
|
|
192
|
-
if (!stillHasAccess) {
|
|
193
|
-
throw new _error.default(`Cannot continue because you would loose access to this folder.`, "CANNOT_LOOSE_FOLDER_ACCESS");
|
|
194
|
-
}
|
|
195
|
-
await onFolderBeforeUpdate.publish({
|
|
196
|
-
original,
|
|
197
|
-
input: {
|
|
198
|
-
id,
|
|
199
|
-
data
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
const folder = await storageOperations.updateFolder({
|
|
203
|
-
id,
|
|
204
|
-
data
|
|
205
|
-
});
|
|
206
|
-
await folderLevelPermissions.assignFolderPermissions(folder);
|
|
207
|
-
await onFolderAfterUpdate.publish({
|
|
208
|
-
original,
|
|
209
|
-
input: {
|
|
210
|
-
id,
|
|
211
|
-
data
|
|
212
|
-
},
|
|
213
|
-
folder
|
|
214
|
-
});
|
|
215
|
-
return folder;
|
|
125
|
+
async create(data) {
|
|
126
|
+
return await createFolderUseCase.execute(data);
|
|
216
127
|
},
|
|
217
128
|
async delete(id) {
|
|
218
|
-
|
|
219
|
-
id
|
|
220
|
-
});
|
|
221
|
-
await folderLevelPermissions.ensureCanAccessFolder({
|
|
222
|
-
folder,
|
|
223
|
-
rwd: "d"
|
|
224
|
-
});
|
|
225
|
-
await onFolderBeforeDelete.publish({
|
|
226
|
-
folder
|
|
227
|
-
});
|
|
228
|
-
await storageOperations.deleteFolder({
|
|
129
|
+
return await deleteFolderUseCase.execute({
|
|
229
130
|
id
|
|
230
131
|
});
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
return true;
|
|
132
|
+
},
|
|
133
|
+
async update(id, data) {
|
|
134
|
+
return await updateFolderUseCase.execute(id, data);
|
|
235
135
|
},
|
|
236
136
|
async getAncestors(folder) {
|
|
237
137
|
const [folders] = await this.listAll({
|
|
@@ -239,7 +139,7 @@ const createFolderCrudMethods = ({
|
|
|
239
139
|
type: folder.type
|
|
240
140
|
}
|
|
241
141
|
});
|
|
242
|
-
return
|
|
142
|
+
return getAncestorsUseCase.execute({
|
|
243
143
|
folder,
|
|
244
144
|
folders
|
|
245
145
|
});
|
|
@@ -252,48 +152,7 @@ const createFolderCrudMethods = ({
|
|
|
252
152
|
return this.getAncestors(folder);
|
|
253
153
|
},
|
|
254
154
|
async listFolderLevelPermissionsTargets() {
|
|
255
|
-
|
|
256
|
-
const teams = await listTeams();
|
|
257
|
-
const teamTargets = teams.map(team => ({
|
|
258
|
-
id: team.id,
|
|
259
|
-
type: "team",
|
|
260
|
-
target: `team:${team.id}`,
|
|
261
|
-
name: team.name || "",
|
|
262
|
-
meta: {}
|
|
263
|
-
}));
|
|
264
|
-
const adminUserTargets = adminUsers.map(user => {
|
|
265
|
-
let name = user.displayName;
|
|
266
|
-
if (!name) {
|
|
267
|
-
// For backwards compatibility, we also want to try concatenating first and last name.
|
|
268
|
-
name = [user.firstName, user.lastName].filter(Boolean).join(" ");
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// We're doing the validation because, with non-Cognito IdPs (Okta, Auth0), the email
|
|
272
|
-
// field might actually contain a non-email value: `id:${IdP_Identity_ID}`. In that case,
|
|
273
|
-
// let's not assign anything to the `email` field.
|
|
274
|
-
let email = user.email;
|
|
275
|
-
try {
|
|
276
|
-
_validation.validation.validateSync(email, "email");
|
|
277
|
-
} catch {
|
|
278
|
-
email = null;
|
|
279
|
-
}
|
|
280
|
-
const image = user.avatar?.src || null;
|
|
281
|
-
return {
|
|
282
|
-
id: user.id,
|
|
283
|
-
type: "admin",
|
|
284
|
-
target: `admin:${user.id}`,
|
|
285
|
-
name,
|
|
286
|
-
meta: {
|
|
287
|
-
email,
|
|
288
|
-
image
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
});
|
|
292
|
-
const results = [...teamTargets, ...adminUserTargets];
|
|
293
|
-
const meta = {
|
|
294
|
-
totalCount: results.length
|
|
295
|
-
};
|
|
296
|
-
return [results, meta];
|
|
155
|
+
return await listFolderLevelPermissionsTargetsUseCase.execute();
|
|
297
156
|
}
|
|
298
157
|
};
|
|
299
158
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pubsub","require","_validation","_getFolderAndItsAncestors","_NotAuthorizedError","_interopRequireDefault","_error","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","listAdminUsers","listTeams","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","get","id","folder","getFolder","ensureCanAccessFolder","rwd","assignFolderPermissions","list","params","filteredFolders","listAllFoldersWithPermissions","where","type","then","parentId","filter","totalCount","length","hasMoreItems","cursor","after","afterListItemIndex","findIndex","splice","limit","listAll","create","data","canCreateFolder","parentFolder","canAccessFolder","canCreateFolderInRoot","NotAuthorizedError","publish","input","createFolder","invalidateFoldersPermissionsListCache","addFolderToCache","update","original","canUpdateFolder","Array","isArray","permissions","forEach","permission","targetIsValid","target","startsWith","Error","inheritedFrom","e","WError","updateFoldersCache","cachedFolder","stillHasAccess","updateFolder","delete","deleteFolder","getAncestors","folders","getFolderAndItsAncestors","getFolderWithAncestors","listFolderLevelPermissionsTargets","adminUsers","teams","teamTargets","map","team","name","meta","adminUserTargets","user","displayName","firstName","lastName","Boolean","join","email","validation","validateSync","image","avatar","src","results","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport { validation } from \"@webiny/validation\";\nimport { CreateAcoParams, Folder } from \"~/types\";\nimport {\n AcoFolderCrud,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\n\nimport { getFolderAndItsAncestors } from \"~/utils/getFolderAndItsAncestors\";\nimport NotAuthorizedError from \"@webiny/api-security/NotAuthorizedError\";\nimport { AdminUser } from \"@webiny/api-admin-users/types\";\nimport { Team } from \"@webiny/api-security/types\";\nimport WError from \"@webiny/error\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n listAdminUsers: () => Promise<AdminUser[]>;\n listTeams: () => Promise<Team[]>;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n listAdminUsers,\n listTeams\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id) {\n const folder = await storageOperations.getFolder({ id });\n\n await folderLevelPermissions.ensureCanAccessFolder({\n folder,\n rwd: \"r\"\n });\n\n await folderLevelPermissions.assignFolderPermissions(folder);\n return folder;\n },\n async list(params) {\n // No matter what was the limit set in the params, initially, we always retrieve\n // all folders. The limit is then applied with the filtered folders list below.\n const filteredFolders = await folderLevelPermissions\n .listAllFoldersWithPermissions(params.where.type)\n .then(filteredFolders => {\n // If `parentId` was included in the `where` clause, we need to filter the folders.\n // TODO: we might want to incorporate this into the `listAllFoldersWithPermissions` method.\n if (params.where.parentId) {\n // Filter by parent ID.\n return filteredFolders.filter(\n folder => folder.parentId === params.where.parentId\n );\n }\n return filteredFolders;\n });\n\n const totalCount = filteredFolders.length;\n let hasMoreItems = false;\n let cursor: string | null = null;\n\n // Apply cursor/limit params.\n if (params.after) {\n const afterListItemIndex = filteredFolders.findIndex(\n folder => folder.id === params.after\n );\n if (afterListItemIndex >= 0) {\n // Remove all items below the \"after\" item.\n filteredFolders.splice(0, afterListItemIndex + 1);\n }\n }\n\n hasMoreItems = !!params.limit && filteredFolders.length > params.limit;\n\n if (hasMoreItems) {\n cursor = filteredFolders[params.limit! - 1]?.id || null;\n filteredFolders.splice(params.limit!);\n }\n\n return [filteredFolders, { totalCount, hasMoreItems, cursor }];\n },\n\n async listAll(params) {\n return this.list({ ...params, limit: FIXED_FOLDER_LISTING_LIMIT });\n },\n\n async create(data) {\n let canCreateFolder = false;\n if (data.parentId) {\n const parentFolder = await storageOperations.getFolder({ id: data.parentId });\n canCreateFolder = await folderLevelPermissions.canAccessFolder({\n folder: parentFolder,\n rwd: \"w\"\n });\n } else {\n canCreateFolder = await folderLevelPermissions.canCreateFolderInRoot();\n }\n\n if (!canCreateFolder) {\n throw new NotAuthorizedError();\n }\n\n await onFolderBeforeCreate.publish({ input: data });\n const folder = await storageOperations.createFolder({ data });\n\n // We need to add the newly created folder to FLP's internal cache. Note that we're also\n // invalidating the permissions list cache for the folder type. We cannot rely on the cache\n // to check if the user has access, because the cache is no longer up to date.\n folderLevelPermissions.invalidateFoldersPermissionsListCache(folder.type);\n folderLevelPermissions.addFolderToCache(folder.type, folder);\n\n // With caches updated and invalidated, we can now assign correct permissions to the folder.\n await folderLevelPermissions.assignFolderPermissions(folder);\n\n await onFolderAfterCreate.publish({ folder });\n\n return folder;\n },\n\n async update(id, data) {\n const original = await storageOperations.getFolder({ id });\n\n const canUpdateFolder = await folderLevelPermissions.canAccessFolder({\n folder: original,\n rwd: \"w\"\n });\n\n if (!canUpdateFolder) {\n throw new NotAuthorizedError();\n }\n\n // Validate data.\n if (Array.isArray(data.permissions)) {\n data.permissions.forEach(permission => {\n const targetIsValid =\n permission.target.startsWith(\"admin:\") ||\n permission.target.startsWith(\"team:\");\n if (!targetIsValid) {\n throw new Error(`Permission target \"${permission.target}\" is not valid.`);\n }\n\n if (permission.inheritedFrom) {\n throw new Error(`Permission \"inheritedFrom\" cannot be set manually.`);\n }\n });\n }\n\n // Parent change is not allowed if the user doesn't have access to the new parent.\n if (data.parentId && data.parentId !== original.parentId) {\n try {\n // Getting the parent folder will throw an error if the user doesn't have access.\n await this.get(data.parentId);\n } catch (e) {\n if (e instanceof NotAuthorizedError) {\n throw new WError(\n `Cannot move folder to a new parent because you don't have access to the new parent.`,\n \"CANNOT_MOVE_FOLDER_TO_NEW_PARENT\"\n );\n }\n\n // If we didn't receive the expected error, we still want to throw it.\n throw e;\n }\n }\n\n // Finally, we check if the user would lose access to the folder by making the update.\n // In order to do this, we need to make a couple of steps. First, we're updating FLP's\n // internal cache with new folder data. Then, we're invalidating the permissions list\n // cache for the folder type. We cannot rely on the cache to check if the user still\n // has access, because the cache might no longer be up-to-date.\n folderLevelPermissions.updateFoldersCache(original.type, cachedFolder => {\n if (cachedFolder.id !== id) {\n return cachedFolder;\n }\n return { ...cachedFolder, ...data };\n });\n folderLevelPermissions.invalidateFoldersPermissionsListCache(original.type);\n\n // With caches updated and invalidated, we can now check if the user still\n // has access to the folder.\n const stillHasAccess = await folderLevelPermissions.canAccessFolder({\n folder: { id, type: original.type },\n rwd: \"w\"\n });\n\n if (!stillHasAccess) {\n throw new WError(\n `Cannot continue because you would loose access to this folder.`,\n \"CANNOT_LOOSE_FOLDER_ACCESS\"\n );\n }\n\n await onFolderBeforeUpdate.publish({ original, input: { id, data } });\n\n const folder = await storageOperations.updateFolder({ id, data });\n await folderLevelPermissions.assignFolderPermissions(folder);\n\n await onFolderAfterUpdate.publish({ original, input: { id, data }, folder });\n\n return folder;\n },\n\n async delete(id: string) {\n const folder = await storageOperations.getFolder({ id });\n\n await folderLevelPermissions.ensureCanAccessFolder({\n folder,\n rwd: \"d\"\n });\n\n await onFolderBeforeDelete.publish({ folder });\n await storageOperations.deleteFolder({ id });\n await onFolderAfterDelete.publish({ folder });\n return true;\n },\n\n async getAncestors(folder: Folder) {\n const [folders] = await this.listAll({ where: { type: folder.type } });\n return getFolderAndItsAncestors({ folder, folders });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n const adminUsers = await listAdminUsers();\n const teams = await listTeams();\n\n const teamTargets = teams.map(team => ({\n id: team.id,\n type: \"team\",\n target: `team:${team.id}`,\n name: team.name || \"\",\n meta: {}\n }));\n\n const adminUserTargets = adminUsers.map(user => {\n let name = user.displayName;\n if (!name) {\n // For backwards compatibility, we also want to try concatenating first and last name.\n name = [user.firstName, user.lastName].filter(Boolean).join(\" \");\n }\n\n // We're doing the validation because, with non-Cognito IdPs (Okta, Auth0), the email\n // field might actually contain a non-email value: `id:${IdP_Identity_ID}`. In that case,\n // let's not assign anything to the `email` field.\n let email: string | null = user.email;\n try {\n validation.validateSync(email, \"email\");\n } catch {\n email = null;\n }\n\n const image = user.avatar?.src || null;\n\n return {\n id: user.id,\n type: \"admin\",\n target: `admin:${user.id}`,\n name,\n meta: {\n email,\n image\n }\n };\n });\n\n const results = [...teamTargets, ...adminUserTargets];\n const meta = { totalCount: results.length };\n\n return [results, meta];\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_pubsub","require","_useCases","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","context","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","getFolderUseCase","getFolderUseCaseWithoutPermissions","getGetFolderUseCase","getOperation","folder","getFolder","listFoldersUseCase","listFoldersUseCaseWithoutPermissions","getListFoldersUseCases","listOperation","listFolders","getFolderHierarchyUseCase","getGetFolderHierarchyUseCases","createFolderUseCase","getCreateFolderUseCases","createOperation","createFolder","topics","updateFolderUseCase","getUpdateFolderUseCase","updateOperation","updateFolder","deleteFolderUseCase","getDeleteFolderUseCases","deleteOperation","deleteFolder","getAncestorsUseCase","getGetAncestors","listFolderLevelPermissionsTargetsUseCase","getListFolderLevelPermissionsTargets","get","id","disablePermissions","execute","list","params","listAll","limit","getFolderHierarchy","create","data","delete","update","getAncestors","folders","where","type","getFolderWithAncestors","listFolderLevelPermissionsTargets","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport {\n AcoFolderCrud,\n type ListFoldersParams,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\nimport {\n getCreateFolderUseCases,\n getDeleteFolderUseCases,\n getGetAncestors,\n getGetFolderUseCase,\n getListFolderLevelPermissionsTargets,\n getListFoldersUseCases,\n getUpdateFolderUseCase,\n getGetFolderHierarchyUseCases\n} from \"~/folder/useCases\";\nimport { type AcoContext, CreateAcoParams, Folder } from \"~/types\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n context: AcoContext;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n context\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n const { getFolderUseCase, getFolderUseCaseWithoutPermissions } = getGetFolderUseCase({\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { listFoldersUseCase, listFoldersUseCaseWithoutPermissions } = getListFoldersUseCases({\n listOperation: storageOperations.folder.listFolders,\n folderLevelPermissions\n });\n\n const { getFolderHierarchyUseCase } = getGetFolderHierarchyUseCases({\n listOperation: storageOperations.folder.listFolders,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { createFolderUseCase } = getCreateFolderUseCases({\n createOperation: storageOperations.folder.createFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterCreate,\n onFolderBeforeCreate\n }\n });\n\n const { updateFolderUseCase } = getUpdateFolderUseCase({\n updateOperation: storageOperations.folder.updateFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterUpdate,\n onFolderBeforeUpdate\n }\n });\n\n const { deleteFolderUseCase } = getDeleteFolderUseCases({\n deleteOperation: storageOperations.folder.deleteFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderBeforeDelete,\n onFolderAfterDelete\n }\n });\n\n const { getAncestorsUseCase } = getGetAncestors();\n\n const { listFolderLevelPermissionsTargetsUseCase } = getListFolderLevelPermissionsTargets({\n context\n });\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id, disablePermissions) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await getFolderUseCaseWithoutPermissions.execute({ id });\n }\n return await getFolderUseCase.execute({ id });\n },\n\n async list({ disablePermissions, ...params }: ListFoldersParams) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await listFoldersUseCaseWithoutPermissions.execute(params);\n }\n return await listFoldersUseCase.execute(params);\n },\n\n async listAll(params) {\n return await this.list({\n ...params,\n limit: FIXED_FOLDER_LISTING_LIMIT\n });\n },\n\n async getFolderHierarchy(params) {\n return await getFolderHierarchyUseCase.execute(params);\n },\n\n async create(data) {\n return await createFolderUseCase.execute(data);\n },\n\n async delete(id) {\n return await deleteFolderUseCase.execute({ id });\n },\n\n async update(id, data) {\n return await updateFolderUseCase.execute(id, data);\n },\n\n async getAncestors(folder: Folder) {\n const [folders] = await this.listAll({ where: { type: folder.type } });\n return getAncestorsUseCase.execute({ folder, folders });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n return await listFolderLevelPermissionsTargetsUseCase.execute();\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
package/folder/folder.gql.js
CHANGED
|
@@ -55,17 +55,39 @@ const createFoldersSchema = params => {
|
|
|
55
55
|
},
|
|
56
56
|
listFoldersCompressed: async (_, args, context) => {
|
|
57
57
|
return (0, _resolve.resolve)(async () => {
|
|
58
|
+
(0, _ensureAuthentication.ensureAuthentication)(context);
|
|
58
59
|
const [entries] = await context.aco.folder.list(args);
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
const foldersPromises = entries.map(folder => {
|
|
61
|
+
const {
|
|
62
|
+
folderLevelPermissions: flp
|
|
63
|
+
} = context.aco;
|
|
64
|
+
const canManageStructure = flp.canManageFolderStructure(folder);
|
|
65
|
+
const canManagePermissions = flp.canManageFolderPermissions(folder);
|
|
66
|
+
const canManageContent = flp.canManageFolderContent(folder);
|
|
67
|
+
const hasNonInheritedPermissions = flp.permissionsIncludeNonInheritedPermissions(folder.permissions);
|
|
68
|
+
return Promise.all([canManageStructure, canManagePermissions, canManageContent, hasNonInheritedPermissions]).then(([canManageStructure, canManagePermissions, canManageContent, hasNonInheritedPermissions]) => {
|
|
69
|
+
return {
|
|
70
|
+
...folder,
|
|
71
|
+
canManageStructure,
|
|
72
|
+
canManagePermissions,
|
|
73
|
+
canManageContent,
|
|
74
|
+
hasNonInheritedPermissions
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
return Promise.all(foldersPromises).then(_compress.compress);
|
|
67
79
|
});
|
|
68
80
|
},
|
|
81
|
+
getFolderHierarchy: async (_, args, context) => {
|
|
82
|
+
try {
|
|
83
|
+
return (0, _resolve.resolve)(() => {
|
|
84
|
+
(0, _ensureAuthentication.ensureAuthentication)(context);
|
|
85
|
+
return context.aco.folder.getFolderHierarchy(args);
|
|
86
|
+
});
|
|
87
|
+
} catch (e) {
|
|
88
|
+
return new _responses.ErrorResponse(e);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
69
91
|
listFolderLevelPermissionsTargets: async (_, args, context) => {
|
|
70
92
|
try {
|
|
71
93
|
(0, _ensureAuthentication.ensureAuthentication)(context);
|