@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
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Authentication } from "@webiny/api-authentication/types";
|
|
2
|
-
import { SecurityPermission, Team } from "@webiny/api-security/types";
|
|
3
|
-
import { Folder, ListFoldersParams } from "../folder/folder.types";
|
|
4
|
-
import { ListMeta } from "../types";
|
|
5
|
-
export type FolderAccessLevel = "owner" | "viewer" | "editor" | "public";
|
|
6
|
-
export interface FolderPermission {
|
|
7
|
-
target: string;
|
|
8
|
-
level: FolderAccessLevel;
|
|
9
|
-
inheritedFrom?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface FolderPermissionsListItem {
|
|
12
|
-
folderId: string;
|
|
13
|
-
permissions: FolderPermission[];
|
|
14
|
-
}
|
|
15
|
-
export type FolderPermissionsList = FolderPermissionsListItem[];
|
|
16
|
-
export interface CanAccessFolderContentParams {
|
|
17
|
-
folder: Pick<Folder, "id" | "type" | "parentId">;
|
|
18
|
-
rwd?: "r" | "w" | "d";
|
|
19
|
-
foldersList?: Folder[];
|
|
20
|
-
}
|
|
21
|
-
export interface CanAccessFolderParams extends CanAccessFolderContentParams {
|
|
22
|
-
managePermissions?: boolean;
|
|
23
|
-
}
|
|
24
|
-
interface FilterFoldersParams {
|
|
25
|
-
folders: Array<Folder>;
|
|
26
|
-
rwd?: "r" | "w" | "d";
|
|
27
|
-
}
|
|
28
|
-
interface GetFolderPermissionsParams {
|
|
29
|
-
folder: Pick<Folder, "id" | "type">;
|
|
30
|
-
foldersList?: Folder[];
|
|
31
|
-
}
|
|
32
|
-
interface ListFolderPermissionsParams {
|
|
33
|
-
folderType: string;
|
|
34
|
-
foldersList?: Folder[];
|
|
35
|
-
}
|
|
36
|
-
export interface FolderLevelPermissionsParams {
|
|
37
|
-
getIdentity: Authentication["getIdentity"];
|
|
38
|
-
listIdentityTeams: () => Promise<Team[]>;
|
|
39
|
-
listPermissions: () => Promise<SecurityPermission[]>;
|
|
40
|
-
listAllFolders: (params: ListFoldersParams) => Promise<[Folder[], ListMeta]>;
|
|
41
|
-
canUseTeams: () => boolean;
|
|
42
|
-
canUseFolderLevelPermissions: () => boolean;
|
|
43
|
-
isAuthorizationEnabled: () => boolean;
|
|
44
|
-
}
|
|
45
|
-
export declare class FolderLevelPermissions {
|
|
46
|
-
canUseFolderLevelPermissions: () => boolean;
|
|
47
|
-
private readonly getIdentity;
|
|
48
|
-
private readonly listIdentityTeams;
|
|
49
|
-
private readonly listPermissions;
|
|
50
|
-
private readonly canUseTeams;
|
|
51
|
-
private readonly isAuthorizationEnabled;
|
|
52
|
-
private foldersPermissionsLists;
|
|
53
|
-
private foldersLoader;
|
|
54
|
-
constructor(params: FolderLevelPermissionsParams);
|
|
55
|
-
listAllFolders(folderType: string): Promise<Folder[]>;
|
|
56
|
-
listAllFoldersWithPermissions(folderType: string): Promise<Folder[]>;
|
|
57
|
-
invalidateFoldersCache(folderType?: string): void;
|
|
58
|
-
invalidateFoldersPermissionsListCache(folderType?: string): void;
|
|
59
|
-
addFolderToCache(folderType: string, folder: Folder): void;
|
|
60
|
-
updateFoldersCache(folderType: string, modifier: (folder: Folder) => Folder): void;
|
|
61
|
-
listFoldersPermissions(params: ListFolderPermissionsParams): Promise<FolderPermissionsList>;
|
|
62
|
-
getFolderPermissions(params: GetFolderPermissionsParams): Promise<FolderPermissionsListItem | undefined>;
|
|
63
|
-
canAccessFolder(params: CanAccessFolderParams): Promise<boolean>;
|
|
64
|
-
ensureCanAccessFolder(params: CanAccessFolderParams): Promise<void>;
|
|
65
|
-
canManageFolderPermissions(folder: Folder): boolean | Promise<boolean>;
|
|
66
|
-
canManageFolderStructure(folder: Folder): true | Promise<boolean>;
|
|
67
|
-
canManageFolderContent(folder: Folder): true | Promise<boolean>;
|
|
68
|
-
canAccessFolderContent(params: CanAccessFolderContentParams): Promise<boolean>;
|
|
69
|
-
ensureCanAccessFolderContent(params: CanAccessFolderContentParams): Promise<void>;
|
|
70
|
-
canCreateFolderInRoot(): Promise<boolean>;
|
|
71
|
-
filterFolders(params: FilterFoldersParams): Promise<Folder[]>;
|
|
72
|
-
assignFolderPermissions(folder: Folder | Folder[]): Promise<void>;
|
|
73
|
-
permissionsIncludeNonInheritedPermissions(folderPermissionsList?: FolderPermission[]): boolean | undefined;
|
|
74
|
-
}
|
|
75
|
-
export {};
|
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.FolderLevelPermissions = void 0;
|
|
7
|
-
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
-
var _ListFoldersRepository = require("./ListFoldersRepository");
|
|
9
|
-
var _FoldersCacheFactory = require("./FoldersCacheFactory");
|
|
10
|
-
class FolderLevelPermissions {
|
|
11
|
-
foldersPermissionsLists = {};
|
|
12
|
-
constructor(params) {
|
|
13
|
-
this.getIdentity = params.getIdentity;
|
|
14
|
-
this.listIdentityTeams = params.listIdentityTeams;
|
|
15
|
-
this.listPermissions = params.listPermissions;
|
|
16
|
-
this.canUseTeams = params.canUseTeams;
|
|
17
|
-
this.canUseFolderLevelPermissions = () => {
|
|
18
|
-
const identity = this.getIdentity();
|
|
19
|
-
|
|
20
|
-
// FLPs only work with authenticated identities (logged-in users).
|
|
21
|
-
if (!identity) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// At the moment, we only want FLP to be used with identities of type "admin".
|
|
26
|
-
// This temporarily addresses the issue of API keys not being able to access content, because
|
|
27
|
-
// FLPs doesn't work with them. Once we start adding FLPs to API keys, we can remove this check.
|
|
28
|
-
if (identity.type !== "admin") {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
return params.canUseFolderLevelPermissions();
|
|
32
|
-
};
|
|
33
|
-
this.isAuthorizationEnabled = params.isAuthorizationEnabled;
|
|
34
|
-
|
|
35
|
-
// Delete the cache on constructor to avoid duplicated permissions lists,
|
|
36
|
-
// especially when calculating permissions based on folder parents.
|
|
37
|
-
_FoldersCacheFactory.folderCacheFactory.deleteCache();
|
|
38
|
-
this.foldersLoader = new _ListFoldersRepository.ListFoldersRepository({
|
|
39
|
-
gateway: params.listAllFolders
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
async listAllFolders(folderType) {
|
|
43
|
-
return await this.foldersLoader.execute(folderType);
|
|
44
|
-
}
|
|
45
|
-
async listAllFoldersWithPermissions(folderType) {
|
|
46
|
-
const folders = await this.listAllFolders(folderType);
|
|
47
|
-
|
|
48
|
-
// Filter folders based on permissions and assign permissions to each folder.
|
|
49
|
-
const filteredFoldersWithPermissions = await this.filterFolders({
|
|
50
|
-
folders,
|
|
51
|
-
rwd: "r"
|
|
52
|
-
});
|
|
53
|
-
await this.assignFolderPermissions(filteredFoldersWithPermissions);
|
|
54
|
-
return filteredFoldersWithPermissions;
|
|
55
|
-
}
|
|
56
|
-
invalidateFoldersCache(folderType) {
|
|
57
|
-
if (folderType) {
|
|
58
|
-
_FoldersCacheFactory.folderCacheFactory.getCache(folderType).clear();
|
|
59
|
-
} else {
|
|
60
|
-
_FoldersCacheFactory.folderCacheFactory.deleteCache();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
invalidateFoldersPermissionsListCache(folderType) {
|
|
64
|
-
if (folderType) {
|
|
65
|
-
if (folderType in this.foldersPermissionsLists) {
|
|
66
|
-
delete this.foldersPermissionsLists[folderType];
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
_FoldersCacheFactory.folderCacheFactory.deleteCache();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
addFolderToCache(folderType, folder) {
|
|
73
|
-
_FoldersCacheFactory.folderCacheFactory.getCache(folderType).addItems([folder]);
|
|
74
|
-
}
|
|
75
|
-
updateFoldersCache(folderType, modifier) {
|
|
76
|
-
_FoldersCacheFactory.folderCacheFactory.getCache(folderType).updateItems(modifier);
|
|
77
|
-
}
|
|
78
|
-
async listFoldersPermissions(params) {
|
|
79
|
-
const existingFoldersPermissionsList = this.foldersPermissionsLists[params.folderType];
|
|
80
|
-
if (existingFoldersPermissionsList) {
|
|
81
|
-
return existingFoldersPermissionsList;
|
|
82
|
-
}
|
|
83
|
-
this.foldersPermissionsLists[params.folderType] = new Promise(async resolve => {
|
|
84
|
-
if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {
|
|
85
|
-
resolve([]);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const {
|
|
89
|
-
folderType,
|
|
90
|
-
foldersList
|
|
91
|
-
} = params;
|
|
92
|
-
const allFolders = foldersList || (await this.listAllFolders(folderType));
|
|
93
|
-
const identity = this.getIdentity();
|
|
94
|
-
const permissions = await this.listPermissions();
|
|
95
|
-
let identityTeams;
|
|
96
|
-
if (this.canUseTeams()) {
|
|
97
|
-
identityTeams = await this.listIdentityTeams();
|
|
98
|
-
}
|
|
99
|
-
const processedFolderPermissions = [];
|
|
100
|
-
const processFolderPermissions = folder => {
|
|
101
|
-
if (processedFolderPermissions.some(fp => fp.folderId === folder.id)) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Copy permissions, so we don't modify the original object.
|
|
106
|
-
const currentFolderPermissions = {
|
|
107
|
-
folderId: folder.id,
|
|
108
|
-
// On new folders, permissions can be `null`. Guard against that.
|
|
109
|
-
permissions: folder.permissions?.map(permission => ({
|
|
110
|
-
...permission
|
|
111
|
-
})) || []
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
// Check for permissions inherited from parent folder.
|
|
115
|
-
if (folder.parentId) {
|
|
116
|
-
const parentFolder = allFolders.find(f => f.id === folder.parentId);
|
|
117
|
-
if (parentFolder) {
|
|
118
|
-
// First check if the parent folder has already been processed.
|
|
119
|
-
let processedParentFolderPermissions = processedFolderPermissions.find(fp => fp.folderId === parentFolder.id);
|
|
120
|
-
|
|
121
|
-
// If not, process the parent folder.
|
|
122
|
-
if (!processedParentFolderPermissions) {
|
|
123
|
-
processFolderPermissions(parentFolder);
|
|
124
|
-
processedParentFolderPermissions = processedFolderPermissions.find(fp => fp.folderId === folder.parentId);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// If the parent folder has permissions, let's add them to the current folder.
|
|
128
|
-
if (processedParentFolderPermissions) {
|
|
129
|
-
const isPublicParentFolder = processedParentFolderPermissions.permissions.some(p => p.level === "public");
|
|
130
|
-
|
|
131
|
-
// We inherit parent permissions if:
|
|
132
|
-
// 1. the parent folder is not public or...
|
|
133
|
-
// 2. ...the parent folder is public, but the current folder doesn't have any permissions set
|
|
134
|
-
const mustInherit = !isPublicParentFolder || currentFolderPermissions.permissions.length === 0;
|
|
135
|
-
if (mustInherit) {
|
|
136
|
-
const inheritedPermissions = processedParentFolderPermissions.permissions.map(p => {
|
|
137
|
-
return {
|
|
138
|
-
...p,
|
|
139
|
-
inheritedFrom: "parent:" + processedParentFolderPermissions.folderId
|
|
140
|
-
};
|
|
141
|
-
});
|
|
142
|
-
currentFolderPermissions.permissions.push(...inheritedPermissions);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Let's ensure current identity's permission is included in the permissions array.
|
|
149
|
-
// We first check if the current identity is already included in the permissions array.
|
|
150
|
-
// If not, we check if the user has full access or if the team user belongs to has access.
|
|
151
|
-
const currentIdentityIncludedInPermissions = currentFolderPermissions.permissions.some(p => p.target === `admin:${identity.id}`);
|
|
152
|
-
const hasFullAccess = permissions.some(p => p.name === "*");
|
|
153
|
-
if (currentIdentityIncludedInPermissions) {
|
|
154
|
-
// 1. Ensure existing identity permission is always the first one in the array.
|
|
155
|
-
const currentIdentityPermissionIndex = currentFolderPermissions.permissions.findIndex(p => p.target === `admin:${identity.id}`);
|
|
156
|
-
if (currentIdentityPermissionIndex > 0) {
|
|
157
|
-
const [currentIdentityPermission] = currentFolderPermissions.permissions.splice(currentIdentityPermissionIndex, 1);
|
|
158
|
-
currentFolderPermissions.permissions.unshift(currentIdentityPermission);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// 2. We must ensure current identity has the "owner" level if they possess full access
|
|
162
|
-
// based on security permissions. This protects us from non-full-access users restricting
|
|
163
|
-
// access to full-access users. This should not happen. Full-access users should always
|
|
164
|
-
// be in control of the permissions for a folder.
|
|
165
|
-
if (hasFullAccess) {
|
|
166
|
-
const accessInheritedFrom = currentFolderPermissions.permissions[0].inheritedFrom;
|
|
167
|
-
|
|
168
|
-
// Why are we checking for non-existence of `accessInheritedFrom`?
|
|
169
|
-
// Because if it doesn't exist, it means the permission is not inherited from
|
|
170
|
-
// a parent folder, which means it's a direct permission set on the folder.
|
|
171
|
-
// In this case, we must ensure the permission is set to "owner".
|
|
172
|
-
if (!accessInheritedFrom) {
|
|
173
|
-
currentFolderPermissions.permissions[0] = {
|
|
174
|
-
target: `admin:${identity.id}`,
|
|
175
|
-
level: "owner",
|
|
176
|
-
inheritedFrom: "role:full-access"
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
} else {
|
|
181
|
-
// Current identity not included in permissions? Let's add it.
|
|
182
|
-
let currentIdentityPermission = null;
|
|
183
|
-
|
|
184
|
-
// 1. Check if the user has full access.
|
|
185
|
-
if (hasFullAccess) {
|
|
186
|
-
currentIdentityPermission = {
|
|
187
|
-
target: `admin:${identity.id}`,
|
|
188
|
-
level: "owner",
|
|
189
|
-
inheritedFrom: "role:full-access"
|
|
190
|
-
};
|
|
191
|
-
} else if (identityTeams.length) {
|
|
192
|
-
// 2. Check the teams user belongs to and that grant access to the folder.
|
|
193
|
-
for (const identityTeam of identityTeams) {
|
|
194
|
-
const teamPermission = currentFolderPermissions.permissions.find(p => p.target === `team:${identityTeam.id}`);
|
|
195
|
-
if (teamPermission) {
|
|
196
|
-
currentIdentityPermission = {
|
|
197
|
-
target: `admin:${identity.id}`,
|
|
198
|
-
level: teamPermission.level,
|
|
199
|
-
inheritedFrom: "team:" + identityTeam.id
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (currentIdentityPermission) {
|
|
205
|
-
// If permission is found, let's add it to the beginning of the array.
|
|
206
|
-
// We're doing this just because it looks nicer in the UI.
|
|
207
|
-
currentFolderPermissions.permissions.unshift(currentIdentityPermission);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Note that this can only happen with root folders. All other (child) folders will
|
|
212
|
-
// always have at least one permission (inherited from parent).
|
|
213
|
-
const mustAddPublicPermission = currentFolderPermissions.permissions.length === 0;
|
|
214
|
-
if (mustAddPublicPermission) {
|
|
215
|
-
currentFolderPermissions.permissions = [{
|
|
216
|
-
target: `admin:${identity.id}`,
|
|
217
|
-
level: "public",
|
|
218
|
-
inheritedFrom: "public"
|
|
219
|
-
}];
|
|
220
|
-
}
|
|
221
|
-
processedFolderPermissions.push(currentFolderPermissions);
|
|
222
|
-
};
|
|
223
|
-
for (let i = 0; i < allFolders.length; i++) {
|
|
224
|
-
const folder = allFolders[i];
|
|
225
|
-
processFolderPermissions(folder);
|
|
226
|
-
}
|
|
227
|
-
resolve(processedFolderPermissions);
|
|
228
|
-
return;
|
|
229
|
-
//return processedFolderPermissions;
|
|
230
|
-
});
|
|
231
|
-
return this.foldersPermissionsLists[params.folderType];
|
|
232
|
-
}
|
|
233
|
-
async getFolderPermissions(params) {
|
|
234
|
-
const {
|
|
235
|
-
folder,
|
|
236
|
-
foldersList
|
|
237
|
-
} = params;
|
|
238
|
-
const folderPermissionsList = await this.listFoldersPermissions({
|
|
239
|
-
folderType: folder.type,
|
|
240
|
-
foldersList
|
|
241
|
-
});
|
|
242
|
-
return folderPermissionsList.find(fp => fp.folderId === folder.id);
|
|
243
|
-
}
|
|
244
|
-
async canAccessFolder(params) {
|
|
245
|
-
if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {
|
|
246
|
-
return true;
|
|
247
|
-
}
|
|
248
|
-
const {
|
|
249
|
-
folder
|
|
250
|
-
} = params;
|
|
251
|
-
const folderPermissions = await this.getFolderPermissions({
|
|
252
|
-
folder,
|
|
253
|
-
foldersList: params.foldersList
|
|
254
|
-
});
|
|
255
|
-
const identity = this.getIdentity();
|
|
256
|
-
const currentIdentityPermission = folderPermissions?.permissions.find(p => {
|
|
257
|
-
return p.target === `admin:${identity.id}`;
|
|
258
|
-
});
|
|
259
|
-
if (!currentIdentityPermission) {
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
const {
|
|
263
|
-
level
|
|
264
|
-
} = currentIdentityPermission;
|
|
265
|
-
if (params.managePermissions) {
|
|
266
|
-
return level === "owner";
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Checking for "write" or "delete" access. Allow only if the
|
|
270
|
-
// user is an owner or the folder is public (no FLP assigned).
|
|
271
|
-
if (params.rwd !== "r") {
|
|
272
|
-
return level === "owner" || level === "public";
|
|
273
|
-
}
|
|
274
|
-
return true;
|
|
275
|
-
}
|
|
276
|
-
async ensureCanAccessFolder(params) {
|
|
277
|
-
const canAccessFolder = await this.canAccessFolder(params);
|
|
278
|
-
if (!canAccessFolder) {
|
|
279
|
-
throw new _apiSecurity.NotAuthorizedError();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
canManageFolderPermissions(folder) {
|
|
283
|
-
if (!this.canUseFolderLevelPermissions()) {
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
if (!this.isAuthorizationEnabled()) {
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
return this.canAccessFolder({
|
|
290
|
-
folder,
|
|
291
|
-
rwd: "w",
|
|
292
|
-
managePermissions: true
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
canManageFolderStructure(folder) {
|
|
296
|
-
if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {
|
|
297
|
-
return true;
|
|
298
|
-
}
|
|
299
|
-
return this.canAccessFolder({
|
|
300
|
-
folder,
|
|
301
|
-
rwd: "w"
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
canManageFolderContent(folder) {
|
|
305
|
-
if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {
|
|
306
|
-
return true;
|
|
307
|
-
}
|
|
308
|
-
return this.canAccessFolderContent({
|
|
309
|
-
folder,
|
|
310
|
-
rwd: "w"
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
async canAccessFolderContent(params) {
|
|
314
|
-
if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {
|
|
315
|
-
return true;
|
|
316
|
-
}
|
|
317
|
-
const {
|
|
318
|
-
folder,
|
|
319
|
-
foldersList
|
|
320
|
-
} = params;
|
|
321
|
-
const folderPermissions = await this.getFolderPermissions({
|
|
322
|
-
folder,
|
|
323
|
-
foldersList
|
|
324
|
-
});
|
|
325
|
-
const identity = this.getIdentity();
|
|
326
|
-
const currentIdentityPermission = folderPermissions?.permissions.find(p => {
|
|
327
|
-
return p.target === `admin:${identity.id}`;
|
|
328
|
-
});
|
|
329
|
-
if (!currentIdentityPermission) {
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// If the user is not an owner and we're checking for "write" or
|
|
334
|
-
// "delete" access, then we can immediately return false.
|
|
335
|
-
if (params.rwd !== "r") {
|
|
336
|
-
const {
|
|
337
|
-
level
|
|
338
|
-
} = currentIdentityPermission;
|
|
339
|
-
return level !== "viewer";
|
|
340
|
-
}
|
|
341
|
-
return true;
|
|
342
|
-
}
|
|
343
|
-
async ensureCanAccessFolderContent(params) {
|
|
344
|
-
const canAccessFolderContent = await this.canAccessFolderContent(params);
|
|
345
|
-
if (!canAccessFolderContent) {
|
|
346
|
-
throw new _apiSecurity.NotAuthorizedError();
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
async canCreateFolderInRoot() {
|
|
350
|
-
return true;
|
|
351
|
-
}
|
|
352
|
-
async filterFolders(params) {
|
|
353
|
-
const filteredFolders = [];
|
|
354
|
-
const {
|
|
355
|
-
folders,
|
|
356
|
-
rwd
|
|
357
|
-
} = params;
|
|
358
|
-
for (let i = 0; i < folders.length; i++) {
|
|
359
|
-
const folder = folders[i];
|
|
360
|
-
const canAccessFolder = await this.canAccessFolder({
|
|
361
|
-
folder,
|
|
362
|
-
rwd
|
|
363
|
-
});
|
|
364
|
-
if (canAccessFolder) {
|
|
365
|
-
filteredFolders.push(folder);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return filteredFolders;
|
|
369
|
-
}
|
|
370
|
-
async assignFolderPermissions(folder) {
|
|
371
|
-
const folders = Array.isArray(folder) ? folder : [folder];
|
|
372
|
-
for (let i = 0; i < folders.length; i++) {
|
|
373
|
-
const folder = folders[i];
|
|
374
|
-
const folderPermissions = await this.getFolderPermissions({
|
|
375
|
-
folder
|
|
376
|
-
});
|
|
377
|
-
if (folderPermissions) {
|
|
378
|
-
folder.permissions = folderPermissions.permissions;
|
|
379
|
-
} else {
|
|
380
|
-
folder.permissions = [];
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
permissionsIncludeNonInheritedPermissions(folderPermissionsList) {
|
|
385
|
-
return folderPermissionsList?.some(p => !p.inheritedFrom);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
exports.FolderLevelPermissions = FolderLevelPermissions;
|
|
389
|
-
|
|
390
|
-
//# sourceMappingURL=FolderLevelPermissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_apiSecurity","require","_ListFoldersRepository","_FoldersCacheFactory","FolderLevelPermissions","foldersPermissionsLists","constructor","params","getIdentity","listIdentityTeams","listPermissions","canUseTeams","canUseFolderLevelPermissions","identity","type","isAuthorizationEnabled","folderCacheFactory","deleteCache","foldersLoader","ListFoldersRepository","gateway","listAllFolders","folderType","execute","listAllFoldersWithPermissions","folders","filteredFoldersWithPermissions","filterFolders","rwd","assignFolderPermissions","invalidateFoldersCache","getCache","clear","invalidateFoldersPermissionsListCache","addFolderToCache","folder","addItems","updateFoldersCache","modifier","updateItems","listFoldersPermissions","existingFoldersPermissionsList","Promise","resolve","foldersList","allFolders","permissions","identityTeams","processedFolderPermissions","processFolderPermissions","some","fp","folderId","id","currentFolderPermissions","map","permission","parentId","parentFolder","find","f","processedParentFolderPermissions","isPublicParentFolder","p","level","mustInherit","length","inheritedPermissions","inheritedFrom","push","currentIdentityIncludedInPermissions","target","hasFullAccess","name","currentIdentityPermissionIndex","findIndex","currentIdentityPermission","splice","unshift","accessInheritedFrom","identityTeam","teamPermission","mustAddPublicPermission","i","getFolderPermissions","folderPermissionsList","canAccessFolder","folderPermissions","managePermissions","ensureCanAccessFolder","NotAuthorizedError","canManageFolderPermissions","canManageFolderStructure","canManageFolderContent","canAccessFolderContent","ensureCanAccessFolderContent","canCreateFolderInRoot","filteredFolders","Array","isArray","permissionsIncludeNonInheritedPermissions","exports"],"sources":["FolderLevelPermissions.ts"],"sourcesContent":["import { Authentication } from \"@webiny/api-authentication/types\";\nimport { SecurityPermission, Team } from \"@webiny/api-security/types\";\nimport { Folder, ListFoldersParams } from \"~/folder/folder.types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { ListFoldersRepository } from \"~/utils/ListFoldersRepository\";\nimport { ListMeta } from \"~/types\";\nimport { folderCacheFactory } from \"~/utils/FoldersCacheFactory\";\n\nexport type FolderAccessLevel = \"owner\" | \"viewer\" | \"editor\" | \"public\";\n\nexport interface FolderPermission {\n target: string;\n level: FolderAccessLevel;\n inheritedFrom?: string;\n}\n\nexport interface FolderPermissionsListItem {\n folderId: string;\n permissions: FolderPermission[];\n}\n\nexport type FolderPermissionsList = FolderPermissionsListItem[];\n\nexport interface CanAccessFolderContentParams {\n folder: Pick<Folder, \"id\" | \"type\" | \"parentId\">;\n rwd?: \"r\" | \"w\" | \"d\";\n foldersList?: Folder[];\n}\n\nexport interface CanAccessFolderParams extends CanAccessFolderContentParams {\n managePermissions?: boolean;\n}\n\ninterface FilterFoldersParams {\n folders: Array<Folder>;\n rwd?: \"r\" | \"w\" | \"d\";\n}\n\ninterface GetFolderPermissionsParams {\n folder: Pick<Folder, \"id\" | \"type\">;\n foldersList?: Folder[];\n}\n\ninterface ListFolderPermissionsParams {\n folderType: string;\n foldersList?: Folder[];\n}\n\nexport interface FolderLevelPermissionsParams {\n getIdentity: Authentication[\"getIdentity\"];\n listIdentityTeams: () => Promise<Team[]>;\n listPermissions: () => Promise<SecurityPermission[]>;\n listAllFolders: (params: ListFoldersParams) => Promise<[Folder[], ListMeta]>;\n canUseTeams: () => boolean;\n canUseFolderLevelPermissions: () => boolean;\n isAuthorizationEnabled: () => boolean;\n}\n\nexport class FolderLevelPermissions {\n canUseFolderLevelPermissions: () => boolean;\n\n private readonly getIdentity: Authentication[\"getIdentity\"];\n private readonly listIdentityTeams: () => Promise<Team[]>;\n private readonly listPermissions: () => Promise<SecurityPermission[]>;\n private readonly canUseTeams: () => boolean;\n private readonly isAuthorizationEnabled: () => boolean;\n private foldersPermissionsLists: Record<string, Promise<FolderPermissionsList> | null> = {};\n private foldersLoader: ListFoldersRepository;\n\n constructor(params: FolderLevelPermissionsParams) {\n this.getIdentity = params.getIdentity;\n this.listIdentityTeams = params.listIdentityTeams;\n this.listPermissions = params.listPermissions;\n this.canUseTeams = params.canUseTeams;\n this.canUseFolderLevelPermissions = () => {\n const identity = this.getIdentity();\n\n // FLPs only work with authenticated identities (logged-in users).\n if (!identity) {\n return false;\n }\n\n // At the moment, we only want FLP to be used with identities of type \"admin\".\n // This temporarily addresses the issue of API keys not being able to access content, because\n // FLPs doesn't work with them. Once we start adding FLPs to API keys, we can remove this check.\n if (identity.type !== \"admin\") {\n return false;\n }\n\n return params.canUseFolderLevelPermissions();\n };\n\n this.isAuthorizationEnabled = params.isAuthorizationEnabled;\n\n // Delete the cache on constructor to avoid duplicated permissions lists,\n // especially when calculating permissions based on folder parents.\n folderCacheFactory.deleteCache();\n this.foldersLoader = new ListFoldersRepository({\n gateway: params.listAllFolders\n });\n }\n\n async listAllFolders(folderType: string): Promise<Folder[]> {\n return await this.foldersLoader.execute(folderType);\n }\n\n async listAllFoldersWithPermissions(folderType: string) {\n const folders = await this.listAllFolders(folderType);\n\n // Filter folders based on permissions and assign permissions to each folder.\n const filteredFoldersWithPermissions = await this.filterFolders({\n folders,\n rwd: \"r\"\n });\n\n await this.assignFolderPermissions(filteredFoldersWithPermissions);\n\n return filteredFoldersWithPermissions;\n }\n\n invalidateFoldersCache(folderType?: string) {\n if (folderType) {\n folderCacheFactory.getCache(folderType).clear();\n } else {\n folderCacheFactory.deleteCache();\n }\n }\n\n invalidateFoldersPermissionsListCache(folderType?: string) {\n if (folderType) {\n if (folderType in this.foldersPermissionsLists) {\n delete this.foldersPermissionsLists[folderType];\n }\n } else {\n folderCacheFactory.deleteCache();\n }\n }\n\n addFolderToCache(folderType: string, folder: Folder) {\n folderCacheFactory.getCache(folderType).addItems([folder]);\n }\n\n updateFoldersCache(folderType: string, modifier: (folder: Folder) => Folder) {\n folderCacheFactory.getCache(folderType).updateItems(modifier);\n }\n\n async listFoldersPermissions(\n params: ListFolderPermissionsParams\n ): Promise<FolderPermissionsList> {\n const existingFoldersPermissionsList = this.foldersPermissionsLists[params.folderType];\n if (existingFoldersPermissionsList) {\n return existingFoldersPermissionsList;\n }\n\n this.foldersPermissionsLists[params.folderType] = new Promise(async resolve => {\n if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {\n resolve([]);\n return;\n }\n\n const { folderType, foldersList } = params;\n\n const allFolders = foldersList || (await this.listAllFolders(folderType));\n const identity = this.getIdentity();\n const permissions = await this.listPermissions();\n\n let identityTeams: Team[];\n if (this.canUseTeams()) {\n identityTeams = await this.listIdentityTeams();\n }\n\n const processedFolderPermissions: FolderPermissionsListItem[] = [];\n\n const processFolderPermissions = (folder: Folder) => {\n if (processedFolderPermissions.some(fp => fp.folderId === folder.id)) {\n return;\n }\n\n // Copy permissions, so we don't modify the original object.\n const currentFolderPermissions: FolderPermissionsListItem = {\n folderId: folder.id,\n // On new folders, permissions can be `null`. Guard against that.\n permissions: folder.permissions?.map(permission => ({ ...permission })) || []\n };\n\n // Check for permissions inherited from parent folder.\n if (folder.parentId) {\n const parentFolder = allFolders!.find(f => f.id === folder.parentId)!;\n if (parentFolder) {\n // First check if the parent folder has already been processed.\n let processedParentFolderPermissions = processedFolderPermissions.find(\n fp => fp.folderId === parentFolder.id\n );\n\n // If not, process the parent folder.\n if (!processedParentFolderPermissions) {\n processFolderPermissions(parentFolder);\n processedParentFolderPermissions = processedFolderPermissions.find(\n fp => fp.folderId === folder.parentId\n );\n }\n\n // If the parent folder has permissions, let's add them to the current folder.\n if (processedParentFolderPermissions) {\n const isPublicParentFolder =\n processedParentFolderPermissions.permissions.some(\n p => p.level === \"public\"\n );\n\n // We inherit parent permissions if:\n // 1. the parent folder is not public or...\n // 2. ...the parent folder is public, but the current folder doesn't have any permissions set\n const mustInherit =\n !isPublicParentFolder ||\n currentFolderPermissions.permissions.length === 0;\n\n if (mustInherit) {\n const inheritedPermissions =\n processedParentFolderPermissions.permissions.map(p => {\n return {\n ...p,\n inheritedFrom:\n \"parent:\" +\n processedParentFolderPermissions!.folderId\n };\n });\n\n currentFolderPermissions.permissions.push(...inheritedPermissions);\n }\n }\n }\n }\n\n // Let's ensure current identity's permission is included in the permissions array.\n // We first check if the current identity is already included in the permissions array.\n // If not, we check if the user has full access or if the team user belongs to has access.\n const currentIdentityIncludedInPermissions =\n currentFolderPermissions.permissions.some(\n p => p.target === `admin:${identity.id}`\n );\n\n const hasFullAccess = permissions.some(p => p.name === \"*\");\n\n if (currentIdentityIncludedInPermissions) {\n // 1. Ensure existing identity permission is always the first one in the array.\n const currentIdentityPermissionIndex =\n currentFolderPermissions.permissions.findIndex(\n p => p.target === `admin:${identity.id}`\n );\n\n if (currentIdentityPermissionIndex > 0) {\n const [currentIdentityPermission] =\n currentFolderPermissions.permissions.splice(\n currentIdentityPermissionIndex,\n 1\n );\n currentFolderPermissions.permissions.unshift(currentIdentityPermission);\n }\n\n // 2. We must ensure current identity has the \"owner\" level if they possess full access\n // based on security permissions. This protects us from non-full-access users restricting\n // access to full-access users. This should not happen. Full-access users should always\n // be in control of the permissions for a folder.\n if (hasFullAccess) {\n const accessInheritedFrom =\n currentFolderPermissions.permissions[0].inheritedFrom;\n\n // Why are we checking for non-existence of `accessInheritedFrom`?\n // Because if it doesn't exist, it means the permission is not inherited from\n // a parent folder, which means it's a direct permission set on the folder.\n // In this case, we must ensure the permission is set to \"owner\".\n if (!accessInheritedFrom) {\n currentFolderPermissions.permissions[0] = {\n target: `admin:${identity.id}`,\n level: \"owner\",\n inheritedFrom: \"role:full-access\"\n };\n }\n }\n } else {\n // Current identity not included in permissions? Let's add it.\n let currentIdentityPermission: FolderPermission | null = null;\n\n // 1. Check if the user has full access.\n if (hasFullAccess) {\n currentIdentityPermission = {\n target: `admin:${identity.id}`,\n level: \"owner\",\n inheritedFrom: \"role:full-access\"\n };\n } else if (identityTeams.length) {\n // 2. Check the teams user belongs to and that grant access to the folder.\n for (const identityTeam of identityTeams) {\n const teamPermission = currentFolderPermissions.permissions.find(\n p => p.target === `team:${identityTeam!.id}`\n );\n\n if (teamPermission) {\n currentIdentityPermission = {\n target: `admin:${identity.id}`,\n level: teamPermission.level,\n inheritedFrom: \"team:\" + identityTeam!.id\n };\n }\n }\n }\n\n if (currentIdentityPermission) {\n // If permission is found, let's add it to the beginning of the array.\n // We're doing this just because it looks nicer in the UI.\n currentFolderPermissions.permissions.unshift(currentIdentityPermission);\n }\n }\n\n // Note that this can only happen with root folders. All other (child) folders will\n // always have at least one permission (inherited from parent).\n const mustAddPublicPermission = currentFolderPermissions.permissions.length === 0;\n if (mustAddPublicPermission) {\n currentFolderPermissions.permissions = [\n {\n target: `admin:${identity.id}`,\n level: \"public\",\n inheritedFrom: \"public\"\n }\n ];\n }\n\n processedFolderPermissions.push(currentFolderPermissions);\n };\n\n for (let i = 0; i < allFolders!.length; i++) {\n const folder = allFolders![i];\n processFolderPermissions(folder);\n }\n\n resolve(processedFolderPermissions);\n return;\n //return processedFolderPermissions;\n });\n\n return this.foldersPermissionsLists[params.folderType]!;\n }\n\n async getFolderPermissions(\n params: GetFolderPermissionsParams\n ): Promise<FolderPermissionsListItem | undefined> {\n const { folder, foldersList } = params;\n const folderPermissionsList = await this.listFoldersPermissions({\n folderType: folder.type,\n foldersList\n });\n\n return folderPermissionsList.find(fp => fp.folderId === folder.id);\n }\n\n async canAccessFolder(params: CanAccessFolderParams) {\n if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {\n return true;\n }\n\n const { folder } = params;\n\n const folderPermissions = await this.getFolderPermissions({\n folder,\n foldersList: params.foldersList\n });\n\n const identity = this.getIdentity();\n const currentIdentityPermission = folderPermissions?.permissions.find(p => {\n return p.target === `admin:${identity.id}`;\n });\n\n if (!currentIdentityPermission) {\n return false;\n }\n\n const { level } = currentIdentityPermission;\n\n if (params.managePermissions) {\n return level === \"owner\";\n }\n\n // Checking for \"write\" or \"delete\" access. Allow only if the\n // user is an owner or the folder is public (no FLP assigned).\n if (params.rwd !== \"r\") {\n return level === \"owner\" || level === \"public\";\n }\n\n return true;\n }\n\n async ensureCanAccessFolder(params: CanAccessFolderParams) {\n const canAccessFolder = await this.canAccessFolder(params);\n if (!canAccessFolder) {\n throw new NotAuthorizedError();\n }\n }\n\n canManageFolderPermissions(folder: Folder) {\n if (!this.canUseFolderLevelPermissions()) {\n return false;\n }\n\n if (!this.isAuthorizationEnabled()) {\n return true;\n }\n\n return this.canAccessFolder({ folder, rwd: \"w\", managePermissions: true });\n }\n\n canManageFolderStructure(folder: Folder) {\n if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {\n return true;\n }\n\n return this.canAccessFolder({ folder, rwd: \"w\" });\n }\n\n canManageFolderContent(folder: Folder) {\n if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {\n return true;\n }\n\n return this.canAccessFolderContent({ folder, rwd: \"w\" });\n }\n\n async canAccessFolderContent(params: CanAccessFolderContentParams) {\n if (!this.canUseFolderLevelPermissions() || !this.isAuthorizationEnabled()) {\n return true;\n }\n\n const { folder, foldersList } = params;\n\n const folderPermissions = await this.getFolderPermissions({\n folder,\n foldersList\n });\n\n const identity = this.getIdentity();\n const currentIdentityPermission = folderPermissions?.permissions.find(p => {\n return p.target === `admin:${identity.id}`;\n });\n\n if (!currentIdentityPermission) {\n return false;\n }\n\n // If the user is not an owner and we're checking for \"write\" or\n // \"delete\" access, then we can immediately return false.\n if (params.rwd !== \"r\") {\n const { level } = currentIdentityPermission;\n return level !== \"viewer\";\n }\n\n return true;\n }\n\n async ensureCanAccessFolderContent(params: CanAccessFolderContentParams) {\n const canAccessFolderContent = await this.canAccessFolderContent(params);\n if (!canAccessFolderContent) {\n throw new NotAuthorizedError();\n }\n }\n\n async canCreateFolderInRoot() {\n return true;\n }\n\n async filterFolders(params: FilterFoldersParams) {\n const filteredFolders: Folder[] = [];\n\n const { folders, rwd } = params;\n for (let i = 0; i < folders.length; i++) {\n const folder = folders[i];\n const canAccessFolder = await this.canAccessFolder({ folder, rwd });\n if (canAccessFolder) {\n filteredFolders.push(folder);\n }\n }\n\n return filteredFolders;\n }\n\n async assignFolderPermissions(folder: Folder | Folder[]) {\n const folders = Array.isArray(folder) ? folder : [folder];\n\n for (let i = 0; i < folders.length; i++) {\n const folder = folders[i];\n const folderPermissions = await this.getFolderPermissions({ folder });\n if (folderPermissions) {\n folder.permissions = folderPermissions.permissions;\n } else {\n folder.permissions = [];\n }\n }\n }\n\n permissionsIncludeNonInheritedPermissions(folderPermissionsList?: FolderPermission[]) {\n return folderPermissionsList?.some(p => !p.inheritedFrom);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const ROOT_FOLDER = "root";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ROOT_FOLDER","exports"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,MAAM","ignoreList":[]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createFolderType = void 0;
|
|
7
|
-
var _isPageModel = require("./isPageModel");
|
|
8
|
-
const createFolderType = model => {
|
|
9
|
-
if (model.modelId === "fmFile") {
|
|
10
|
-
return "FmFile";
|
|
11
|
-
} else if ((0, _isPageModel.isPageModel)(model)) {
|
|
12
|
-
return "PbPage";
|
|
13
|
-
}
|
|
14
|
-
return `cms:${model.modelId}`;
|
|
15
|
-
};
|
|
16
|
-
exports.createFolderType = createFolderType;
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=createFolderType.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_isPageModel","require","createFolderType","model","modelId","isPageModel","exports"],"sources":["createFolderType.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { isPageModel } from \"./isPageModel\";\n\nexport const createFolderType = (model: CmsModel): \"FmFile\" | \"PbPage\" | `cms:${string}` => {\n if (model.modelId === \"fmFile\") {\n return \"FmFile\";\n } else if (isPageModel(model)) {\n return \"PbPage\";\n }\n return `cms:${model.modelId}`;\n};\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,KAAe,IAA4C;EACxF,IAAIA,KAAK,CAACC,OAAO,KAAK,QAAQ,EAAE;IAC5B,OAAO,QAAQ;EACnB,CAAC,MAAM,IAAI,IAAAC,wBAAW,EAACF,KAAK,CAAC,EAAE;IAC3B,OAAO,QAAQ;EACnB;EACA,OAAO,OAAOA,KAAK,CAACC,OAAO,EAAE;AACjC,CAAC;AAACE,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { AcoContext } from "../../types";
|
|
2
|
-
import { CmsEntry, CmsModel } from "@webiny/api-headless-cms/types";
|
|
3
|
-
import { FolderLevelPermissions } from "../FolderLevelPermissions";
|
|
4
|
-
type Context = Pick<AcoContext, "aco" | "cms">;
|
|
5
|
-
export declare const filterEntriesByFolderFactory: (context: Context, permissions: FolderLevelPermissions) => (model: CmsModel, entries: CmsEntry[]) => Promise<CmsEntry<import("@webiny/api-headless-cms/types").CmsEntryValues>[]>;
|
|
6
|
-
export {};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.filterEntriesByFolderFactory = void 0;
|
|
7
|
-
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
-
var _constants = require("./constants");
|
|
9
|
-
var _createFolderType = require("./createFolderType");
|
|
10
|
-
const filterEntriesByFolderFactory = (context, permissions) => {
|
|
11
|
-
return async (model, entries) => {
|
|
12
|
-
const [folders] = await context.aco.folder.listAll({
|
|
13
|
-
where: {
|
|
14
|
-
type: (0, _createFolderType.createFolderType)(model)
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
const results = await Promise.all(entries.map(async entry => {
|
|
18
|
-
const folderId = entry.location?.folderId;
|
|
19
|
-
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
20
|
-
return entry;
|
|
21
|
-
}
|
|
22
|
-
const folder = folders.find(folder => folder.id === folderId);
|
|
23
|
-
if (!folder) {
|
|
24
|
-
throw new _handlerGraphql.NotFoundError(`Folder "${folderId}" not found.`);
|
|
25
|
-
}
|
|
26
|
-
const result = await permissions.canAccessFolderContent({
|
|
27
|
-
folder,
|
|
28
|
-
rwd: "r"
|
|
29
|
-
});
|
|
30
|
-
return result ? entry : null;
|
|
31
|
-
}));
|
|
32
|
-
return results.filter(entry => !!entry);
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
exports.filterEntriesByFolderFactory = filterEntriesByFolderFactory;
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=filterEntriesByFolderFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_handlerGraphql","require","_constants","_createFolderType","filterEntriesByFolderFactory","context","permissions","model","entries","folders","aco","folder","listAll","where","type","createFolderType","results","Promise","all","map","entry","folderId","location","ROOT_FOLDER","find","id","NotFoundError","result","canAccessFolderContent","rwd","filter","exports"],"sources":["filterEntriesByFolderFactory.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\nimport { ROOT_FOLDER } from \"./constants\";\n\ntype Context = Pick<AcoContext, \"aco\" | \"cms\">;\n\nimport { createFolderType } from \"./createFolderType\";\n\nexport const filterEntriesByFolderFactory = (\n context: Context,\n permissions: FolderLevelPermissions\n) => {\n return async (model: CmsModel, entries: CmsEntry[]) => {\n const [folders] = await context.aco.folder.listAll({\n where: {\n type: createFolderType(model)\n }\n });\n\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 folder = folders.find(folder => folder.id === folderId);\n if (!folder) {\n throw new NotFoundError(`Folder \"${folderId}\" not found.`);\n }\n const result = await permissions.canAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return result ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry => !!entry);\n };\n};\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAIA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,MAAMG,4BAA4B,GAAGA,CACxCC,OAAgB,EAChBC,WAAmC,KAClC;EACD,OAAO,OAAOC,KAAe,EAAEC,OAAmB,KAAK;IACnD,MAAM,CAACC,OAAO,CAAC,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACC,MAAM,CAACC,OAAO,CAAC;MAC/CC,KAAK,EAAE;QACHC,IAAI,EAAE,IAAAC,kCAAgB,EAACR,KAAK;MAChC;IACJ,CAAC,CAAC;IAEF,MAAMS,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7BV,OAAO,CAACW,GAAG,CAAC,MAAMC,KAAK,IAAI;MACvB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,QAAQ,EAAED,QAAQ;MACzC,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKE,sBAAW,EAAE;QACvC,OAAOH,KAAK;MAChB;MAEA,MAAMT,MAAM,GAAGF,OAAO,CAACe,IAAI,CAACb,MAAM,IAAIA,MAAM,CAACc,EAAE,KAAKJ,QAAQ,CAAC;MAC7D,IAAI,CAACV,MAAM,EAAE;QACT,MAAM,IAAIe,6BAAa,CAAC,WAAWL,QAAQ,cAAc,CAAC;MAC9D;MACA,MAAMM,MAAM,GAAG,MAAMrB,WAAW,CAACsB,sBAAsB,CAAC;QACpDjB,MAAM;QACNkB,GAAG,EAAE;MACT,CAAC,CAAC;MACF,OAAOF,MAAM,GAAGP,KAAK,GAAG,IAAI;IAChC,CAAC,CACL,CAAC;IAED,OAAOJ,OAAO,CAACc,MAAM,CAAEV,KAAK,IAAwB,CAAC,CAACA,KAAK,CAAC;EAChE,CAAC;AACL,CAAC;AAACW,OAAA,CAAA3B,4BAAA,GAAAA,4BAAA","ignoreList":[]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { CmsEntryListWhere, CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
|
-
import { Folder } from "../../folder/folder.types";
|
|
3
|
-
interface Params {
|
|
4
|
-
model: CmsModel;
|
|
5
|
-
where: CmsEntryListWhere | undefined;
|
|
6
|
-
folders: Folder[];
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* There are multiple cases that we need to handle:
|
|
10
|
-
* * existing location with no AND conditional
|
|
11
|
-
* * existing location with AND conditional
|
|
12
|
-
* * no existing location with no AND conditional + with AND conditional
|
|
13
|
-
*/
|
|
14
|
-
export declare const createWhere: (params: Params) => CmsEntryListWhere | undefined;
|
|
15
|
-
export {};
|