@webiny/api-headless-cms 0.0.0-mt-2 → 0.0.0-unstable.06b2ede40f
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/constants.d.ts +44 -0
- package/constants.js +70 -0
- package/constants.js.map +1 -0
- package/context.d.ts +6 -0
- package/context.js +164 -0
- package/context.js.map +1 -0
- package/crud/AccessControl/AccessControl.d.ts +98 -0
- package/crud/AccessControl/AccessControl.js +542 -0
- package/crud/AccessControl/AccessControl.js.map +1 -0
- package/crud/AccessControl/README.md +47 -0
- package/crud/AccessControl/groups-own.png +0 -0
- package/crud/AccessControl/models-own.png +0 -0
- package/crud/contentEntry/abstractions/IDeleteEntry.d.ts +4 -0
- package/crud/contentEntry/abstractions/IDeleteEntry.js +7 -0
- package/crud/contentEntry/abstractions/IDeleteEntry.js.map +1 -0
- package/crud/contentEntry/abstractions/IDeleteEntryOperation.d.ts +4 -0
- package/crud/contentEntry/abstractions/IDeleteEntryOperation.js +7 -0
- package/crud/contentEntry/abstractions/IDeleteEntryOperation.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetEntriesByIds.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetEntriesByIds.js +7 -0
- package/crud/contentEntry/abstractions/IGetEntriesByIds.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetEntry.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetEntry.js +7 -0
- package/crud/contentEntry/abstractions/IGetEntry.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetLatestEntriesByIds.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetLatestEntriesByIds.js +7 -0
- package/crud/contentEntry/abstractions/IGetLatestEntriesByIds.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetLatestRevisionByEntryId.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetLatestRevisionByEntryId.js +7 -0
- package/crud/contentEntry/abstractions/IGetLatestRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetPreviousRevisionByEntryId.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetPreviousRevisionByEntryId.js +7 -0
- package/crud/contentEntry/abstractions/IGetPreviousRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetPublishedEntriesByIds.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetPublishedEntriesByIds.js +7 -0
- package/crud/contentEntry/abstractions/IGetPublishedEntriesByIds.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetPublishedRevisionByEntryId.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetPublishedRevisionByEntryId.js +7 -0
- package/crud/contentEntry/abstractions/IGetPublishedRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetRevisionById.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetRevisionById.js +7 -0
- package/crud/contentEntry/abstractions/IGetRevisionById.js.map +1 -0
- package/crud/contentEntry/abstractions/IGetRevisionsByEntryId.d.ts +4 -0
- package/crud/contentEntry/abstractions/IGetRevisionsByEntryId.js +7 -0
- package/crud/contentEntry/abstractions/IGetRevisionsByEntryId.js.map +1 -0
- package/crud/contentEntry/abstractions/IListEntries.d.ts +4 -0
- package/crud/contentEntry/abstractions/IListEntries.js +7 -0
- package/crud/contentEntry/abstractions/IListEntries.js.map +1 -0
- package/crud/contentEntry/abstractions/IListEntriesOperation.d.ts +4 -0
- package/crud/contentEntry/abstractions/IListEntriesOperation.js +7 -0
- package/crud/contentEntry/abstractions/IListEntriesOperation.js.map +1 -0
- package/crud/contentEntry/abstractions/IMoveEntryToBinOperation.d.ts +4 -0
- package/crud/contentEntry/abstractions/IMoveEntryToBinOperation.js +7 -0
- package/crud/contentEntry/abstractions/IMoveEntryToBinOperation.js.map +1 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBin.d.ts +4 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBin.js +7 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBin.js.map +1 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBinOperation.d.ts +4 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBinOperation.js +7 -0
- package/crud/contentEntry/abstractions/IRestoreEntryFromBinOperation.js.map +1 -0
- package/crud/contentEntry/abstractions/index.d.ts +16 -0
- package/crud/contentEntry/abstractions/index.js +183 -0
- package/crud/contentEntry/abstractions/index.js.map +1 -0
- package/crud/contentEntry/afterDelete.d.ts +12 -0
- package/crud/contentEntry/afterDelete.js +52 -0
- package/crud/contentEntry/afterDelete.js.map +1 -0
- package/crud/contentEntry/beforeCreate.d.ts +8 -0
- package/crud/contentEntry/beforeCreate.js +27 -0
- package/crud/contentEntry/beforeCreate.js.map +1 -0
- package/crud/contentEntry/beforeUpdate.d.ts +8 -0
- package/crud/contentEntry/beforeUpdate.js +27 -0
- package/crud/contentEntry/beforeUpdate.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js +254 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +23 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +157 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +63 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +59 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +40 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +130 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
- package/crud/contentEntry/entryDataFactories/index.js +95 -0
- package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
- package/crud/contentEntry/entryDataFactories/statuses.js +12 -0
- package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
- package/crud/contentEntry/entryDataValidation.d.ts +12 -0
- package/crud/contentEntry/entryDataValidation.js +339 -0
- package/crud/contentEntry/entryDataValidation.js.map +1 -0
- package/crud/contentEntry/markLockedFields.d.ts +13 -0
- package/crud/contentEntry/markLockedFields.js +110 -0
- package/crud/contentEntry/markLockedFields.js.map +1 -0
- package/crud/contentEntry/referenceFieldsMapping.d.ts +19 -0
- package/crud/contentEntry/referenceFieldsMapping.js +288 -0
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +73 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntry.d.ts +10 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntry.js +58 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntry.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperation.d.ts +7 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperation.js +17 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperation.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperationWithEvents.d.ts +9 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperationWithEvents.js +45 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperationWithEvents.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntrySecure.d.ts +9 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntrySecure.js +22 -0
- package/crud/contentEntry/useCases/DeleteEntry/DeleteEntrySecure.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBin.d.ts +10 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBin.js +33 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBin.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperation.d.ts +7 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperation.js +17 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperation.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperationWithEvents.d.ts +9 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperationWithEvents.js +45 -0
- package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperationWithEvents.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryDelete.d.ts +6 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryDelete.js +21 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryDelete.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.d.ts +9 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.js +54 -0
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.js.map +1 -0
- package/crud/contentEntry/useCases/DeleteEntry/index.d.ts +28 -0
- package/crud/contentEntry/useCases/DeleteEntry/index.js +42 -0
- package/crud/contentEntry/useCases/DeleteEntry/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.d.ts +9 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.js +21 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.js.map +1 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsNotDeleted.js +18 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsSecure.d.ts +9 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsSecure.js +28 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsSecure.js.map +1 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/index.d.ts +13 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/index.js +20 -0
- package/crud/contentEntry/useCases/GetEntriesByIds/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.d.ts +9 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.js +21 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsNotDeleted.js +18 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsSecure.d.ts +9 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsSecure.js +28 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsSecure.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.d.ts +13 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.js +20 -0
- package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.d.ts +9 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.js +22 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdDeleted.js +21 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdNotDeleted.js +21 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.d.ts +15 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.js +22 -0
- package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.d.ts +9 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.js +22 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdNotDeleted.js +21 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.d.ts +11 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.js +18 -0
- package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.d.ts +9 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.js +21 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsNotDeleted.js +18 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsSecure.d.ts +9 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsSecure.js +28 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsSecure.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.d.ts +13 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.js +20 -0
- package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.d.ts +9 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.js +22 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdNotDeleted.js +21 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.d.ts +11 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.js +18 -0
- package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.d.ts +9 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.js +22 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionByIdNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionByIdNotDeleted.js +21 -0
- package/crud/contentEntry/useCases/GetRevisionById/GetRevisionByIdNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionById/index.d.ts +11 -0
- package/crud/contentEntry/useCases/GetRevisionById/index.js +18 -0
- package/crud/contentEntry/useCases/GetRevisionById/index.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.d.ts +9 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.js +21 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryIdNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryIdNotDeleted.js +18 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryIdNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.d.ts +13 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.js +18 -0
- package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntry.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntry.js +29 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntry.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntrySecure.d.ts +11 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntrySecure.js +38 -0
- package/crud/contentEntry/useCases/ListEntries/GetEntrySecure.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntries.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntries.js +62 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntries.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.d.ts +14 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.js +24 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationDeleted.js +24 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationLatest.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationLatest.js +25 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationLatest.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationNotDeleted.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationNotDeleted.js +24 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationNotDeleted.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationPublished.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationPublished.js +24 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationPublished.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithEvents.d.ts +9 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithEvents.js +22 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithEvents.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSearchableFields.d.ts +8 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSearchableFields.js +27 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSearchableFields.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSort.d.ts +8 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSort.js +26 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSort.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithStatusCheck.d.ts +7 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithStatusCheck.js +36 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithStatusCheck.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesSecure.d.ts +11 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesSecure.js +41 -0
- package/crud/contentEntry/useCases/ListEntries/ListEntriesSecure.js.map +1 -0
- package/crud/contentEntry/useCases/ListEntries/index.d.ts +26 -0
- package/crud/contentEntry/useCases/ListEntries/index.js +61 -0
- package/crud/contentEntry/useCases/ListEntries/index.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBin.d.ts +10 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBin.js +37 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBin.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.d.ts +9 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.js +19 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperationWithEvents.d.ts +9 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperationWithEvents.js +42 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperationWithEvents.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinSecure.d.ts +9 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinSecure.js +22 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinSecure.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.d.ts +9 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.js +53 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.js.map +1 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/index.d.ts +25 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/index.js +24 -0
- package/crud/contentEntry/useCases/RestoreEntryFromBin/index.js.map +1 -0
- package/crud/contentEntry/useCases/index.d.ts +11 -0
- package/crud/contentEntry/useCases/index.js +128 -0
- package/crud/contentEntry/useCases/index.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +15 -0
- package/crud/contentEntry.crud.js +1253 -0
- package/crud/contentEntry.crud.js.map +1 -0
- package/crud/contentModel/beforeCreate.d.ts +14 -0
- package/crud/contentModel/beforeCreate.js +130 -0
- package/crud/contentModel/beforeCreate.js.map +1 -0
- package/crud/contentModel/beforeDelete.d.ts +8 -0
- package/crud/contentModel/beforeDelete.js +82 -0
- package/crud/contentModel/beforeDelete.js.map +1 -0
- package/crud/contentModel/beforeUpdate.d.ts +8 -0
- package/crud/contentModel/beforeUpdate.js +57 -0
- package/crud/contentModel/beforeUpdate.js.map +1 -0
- package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
- package/crud/contentModel/compatibility/modelApiName.js +26 -0
- package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
- package/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
- package/crud/contentModel/contentModelManagerFactory.js +24 -0
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -0
- package/crud/contentModel/createFieldStorageId.d.ts +2 -0
- package/crud/contentModel/createFieldStorageId.js +19 -0
- package/crud/contentModel/createFieldStorageId.js.map +1 -0
- package/crud/contentModel/defaultFields.d.ts +5 -0
- package/crud/contentModel/defaultFields.js +60 -0
- package/crud/contentModel/defaultFields.js.map +1 -0
- package/crud/contentModel/ensureTypeTag.d.ts +5 -0
- package/crud/contentModel/ensureTypeTag.js +21 -0
- package/crud/contentModel/ensureTypeTag.js.map +1 -0
- package/crud/contentModel/fields/descriptionField.d.ts +6 -0
- package/crud/contentModel/fields/descriptionField.js +30 -0
- package/crud/contentModel/fields/descriptionField.js.map +1 -0
- package/crud/contentModel/fields/getApplicableFieldById.d.ts +2 -0
- package/crud/contentModel/fields/getApplicableFieldById.js +15 -0
- package/crud/contentModel/fields/getApplicableFieldById.js.map +1 -0
- package/crud/contentModel/fields/imageField.d.ts +2 -0
- package/crud/contentModel/fields/imageField.js +25 -0
- package/crud/contentModel/fields/imageField.js.map +1 -0
- package/crud/contentModel/fields/titleField.d.ts +6 -0
- package/crud/contentModel/fields/titleField.js +31 -0
- package/crud/contentModel/fields/titleField.js.map +1 -0
- package/crud/contentModel/listModelsFromDatabase.d.ts +10 -0
- package/crud/contentModel/listModelsFromDatabase.js +38 -0
- package/crud/contentModel/listModelsFromDatabase.js.map +1 -0
- package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
- package/crud/contentModel/validate/endingAllowed.js +28 -0
- package/crud/contentModel/validate/endingAllowed.js.map +1 -0
- package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
- package/crud/contentModel/validate/isModelEndingAllowed.js +25 -0
- package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
- package/crud/contentModel/validate/modelId.d.ts +11 -0
- package/crud/contentModel/validate/modelId.js +38 -0
- package/crud/contentModel/validate/modelId.js.map +1 -0
- package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
- package/crud/contentModel/validate/pluralApiName.js +26 -0
- package/crud/contentModel/validate/pluralApiName.js.map +1 -0
- package/crud/contentModel/validate/singularApiName.d.ts +7 -0
- package/crud/contentModel/validate/singularApiName.js +26 -0
- package/crud/contentModel/validate/singularApiName.js.map +1 -0
- package/crud/contentModel/validateModel.d.ts +9 -0
- package/crud/contentModel/validateModel.js +29 -0
- package/crud/contentModel/validateModel.js.map +1 -0
- package/crud/contentModel/validateModelFields.d.ts +9 -0
- package/crud/contentModel/validateModelFields.js +343 -0
- package/crud/contentModel/validateModelFields.js.map +1 -0
- package/crud/contentModel/validateStorageId.d.ts +1 -0
- package/crud/contentModel/validateStorageId.js +19 -0
- package/crud/contentModel/validateStorageId.js.map +1 -0
- package/crud/contentModel/validation.d.ts +893 -0
- package/crud/contentModel/validation.js +205 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.d.ts +14 -0
- package/crud/contentModel.crud.js +620 -0
- package/crud/contentModel.crud.js.map +1 -0
- package/crud/contentModelGroup/beforeCreate.d.ts +10 -0
- package/crud/contentModelGroup/beforeCreate.js +68 -0
- package/crud/contentModelGroup/beforeCreate.js.map +1 -0
- package/crud/contentModelGroup/beforeDelete.d.ts +10 -0
- package/crud/contentModelGroup/beforeDelete.js +42 -0
- package/crud/contentModelGroup/beforeDelete.js.map +1 -0
- package/crud/contentModelGroup/beforeUpdate.d.ts +9 -0
- package/crud/contentModelGroup/beforeUpdate.js +25 -0
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +8 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js +22 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -0
- package/crud/contentModelGroup/validation.d.ts +33 -0
- package/crud/contentModelGroup/validation.js +37 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.d.ts +14 -0
- package/crud/contentModelGroup.crud.js +357 -0
- package/crud/contentModelGroup.crud.js.map +1 -0
- package/crud/system.crud.d.ts +13 -0
- package/crud/system.crud.js +133 -0
- package/crud/system.crud.js.map +1 -0
- package/export/crud/exporting.d.ts +3 -0
- package/export/crud/exporting.js +49 -0
- package/export/crud/exporting.js.map +1 -0
- package/export/crud/importing.d.ts +3 -0
- package/export/crud/importing.js +79 -0
- package/export/crud/importing.js.map +1 -0
- package/export/crud/imports/importData.d.ts +14 -0
- package/export/crud/imports/importData.js +52 -0
- package/export/crud/imports/importData.js.map +1 -0
- package/export/crud/imports/importGroups.d.ts +8 -0
- package/export/crud/imports/importGroups.js +104 -0
- package/export/crud/imports/importGroups.js.map +1 -0
- package/export/crud/imports/importModels.d.ts +8 -0
- package/export/crud/imports/importModels.js +136 -0
- package/export/crud/imports/importModels.js.map +1 -0
- package/export/crud/imports/validateGroups.d.ts +8 -0
- package/export/crud/imports/validateGroups.js +112 -0
- package/export/crud/imports/validateGroups.js.map +1 -0
- package/export/crud/imports/validateInput.d.ts +19 -0
- package/export/crud/imports/validateInput.js +55 -0
- package/export/crud/imports/validateInput.js.map +1 -0
- package/export/crud/imports/validateModels.d.ts +12 -0
- package/export/crud/imports/validateModels.js +203 -0
- package/export/crud/imports/validateModels.js.map +1 -0
- package/export/crud/index.d.ts +4 -0
- package/export/crud/index.js +15 -0
- package/export/crud/index.js.map +1 -0
- package/export/crud/sanitize.d.ts +4 -0
- package/export/crud/sanitize.js +36 -0
- package/export/crud/sanitize.js.map +1 -0
- package/export/graphql/index.d.ts +3 -0
- package/export/graphql/index.js +188 -0
- package/export/graphql/index.js.map +1 -0
- package/export/index.d.ts +2 -0
- package/export/index.js +29 -0
- package/export/index.js.map +1 -0
- package/export/types.d.ts +113 -0
- package/export/types.js +21 -0
- package/export/types.js.map +1 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +9 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +50 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +12 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +158 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +12 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +260 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/index.d.ts +7 -0
- package/fieldConverters/index.js +19 -0
- package/fieldConverters/index.js.map +1 -0
- package/graphql/buildSchemaPlugins.d.ts +11 -0
- package/graphql/buildSchemaPlugins.js +25 -0
- package/graphql/buildSchemaPlugins.js.map +1 -0
- package/graphql/checkEndpointAccess.d.ts +2 -0
- package/graphql/checkEndpointAccess.js +20 -0
- package/graphql/checkEndpointAccess.js.map +1 -0
- package/graphql/createExecutableSchema.d.ts +6 -0
- package/graphql/createExecutableSchema.js +38 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/createRequestBody.d.ts +2 -0
- package/graphql/createRequestBody.js +16 -0
- package/graphql/createRequestBody.js.map +1 -0
- package/graphql/formatErrorPayload.d.ts +1 -0
- package/graphql/formatErrorPayload.js +27 -0
- package/graphql/formatErrorPayload.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +38 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/getSchema/generateCacheId.d.ts +10 -0
- package/graphql/getSchema/generateCacheId.js +17 -0
- package/graphql/getSchema/generateCacheId.js.map +1 -0
- package/graphql/getSchema/generateCacheKey.d.ts +10 -0
- package/graphql/getSchema/generateCacheKey.js +34 -0
- package/graphql/getSchema/generateCacheKey.js.map +1 -0
- package/graphql/getSchema.d.ts +16 -0
- package/graphql/getSchema.js +81 -0
- package/graphql/getSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.d.ts +5 -0
- package/graphql/graphQLHandlerFactory.js +37 -0
- package/graphql/graphQLHandlerFactory.js.map +1 -0
- package/graphql/handleRequest.d.ts +11 -0
- package/graphql/handleRequest.js +86 -0
- package/graphql/handleRequest.js.map +1 -0
- package/graphql/index.d.ts +4 -0
- package/graphql/index.js +15 -0
- package/graphql/index.js.map +1 -0
- package/graphql/scalars/RevisionId.d.ts +2 -0
- package/graphql/scalars/RevisionId.js +26 -0
- package/graphql/scalars/RevisionId.js.map +1 -0
- package/graphql/scalars/RevisionIdScalarPlugin.d.ts +2 -0
- package/graphql/scalars/RevisionIdScalarPlugin.js +18 -0
- package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -0
- package/graphql/schema/baseContentSchema.d.ts +7 -0
- package/graphql/schema/baseContentSchema.js +61 -0
- package/graphql/schema/baseContentSchema.js.map +1 -0
- package/graphql/schema/baseSchema.d.ts +2 -0
- package/graphql/schema/baseSchema.js +153 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +7 -0
- package/graphql/schema/contentEntries.js +399 -0
- package/graphql/schema/contentEntries.js.map +1 -0
- package/graphql/schema/contentModelGroups.d.ts +7 -0
- package/graphql/schema/contentModelGroups.js +162 -0
- package/graphql/schema/contentModelGroups.js.map +1 -0
- package/graphql/schema/contentModels.d.ts +6 -0
- package/graphql/schema/contentModels.js +333 -0
- package/graphql/schema/contentModels.js.map +1 -0
- package/graphql/schema/createFieldResolvers.d.ts +20 -0
- package/graphql/schema/createFieldResolvers.js +104 -0
- package/graphql/schema/createFieldResolvers.js.map +1 -0
- package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
- package/graphql/schema/createFieldTypePluginRecords.js +15 -0
- package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
- package/graphql/schema/createManageResolvers.d.ts +11 -0
- package/graphql/schema/createManageResolvers.js +119 -0
- package/graphql/schema/createManageResolvers.js.map +1 -0
- package/graphql/schema/createManageSDL.d.ts +13 -0
- package/graphql/schema/createManageSDL.js +207 -0
- package/graphql/schema/createManageSDL.js.map +1 -0
- package/graphql/schema/createPreviewResolvers.d.ts +11 -0
- package/graphql/schema/createPreviewResolvers.js +42 -0
- package/graphql/schema/createPreviewResolvers.js.map +1 -0
- package/graphql/schema/createReadResolvers.d.ts +11 -0
- package/graphql/schema/createReadResolvers.js +47 -0
- package/graphql/schema/createReadResolvers.js.map +1 -0
- package/graphql/schema/createReadSDL.d.ts +13 -0
- package/graphql/schema/createReadSDL.js +110 -0
- package/graphql/schema/createReadSDL.js.map +1 -0
- package/graphql/schema/createSingularResolvers.d.ts +12 -0
- package/graphql/schema/createSingularResolvers.js +56 -0
- package/graphql/schema/createSingularResolvers.js.map +1 -0
- package/graphql/schema/createSingularSDL.d.ts +12 -0
- package/graphql/schema/createSingularSDL.js +95 -0
- package/graphql/schema/createSingularSDL.js.map +1 -0
- package/graphql/schema/resolvers/manage/normalizeGraphQlInput.d.ts +7 -0
- package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +59 -0
- package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveCreate.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveCreate.js +20 -0
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +9 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +20 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveDelete.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveDelete.js +39 -0
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +22 -0
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGet.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGet.js +70 -0
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +20 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +20 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +20 -0
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/manage/resolveList.js +20 -0
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveListDeleted.d.ts +4 -0
- package/graphql/schema/resolvers/manage/resolveListDeleted.js +20 -0
- package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveMove.js +27 -0
- package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolvePublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolvePublish.js +20 -0
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.js +20 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveRestoreFromBin.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js +20 -0
- package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +20 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +9 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.js +20 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveValidate.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js +20 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveGet.d.ts +4 -0
- package/graphql/schema/resolvers/preview/resolveGet.js +27 -0
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/preview/resolveList.js +20 -0
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -0
- package/graphql/schema/resolvers/read/resolveGet.d.ts +4 -0
- package/graphql/schema/resolvers/read/resolveGet.js +27 -0
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/read/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/read/resolveList.js +20 -0
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -0
- package/graphql/schema/resolvers/singular/resolveGet.d.ts +7 -0
- package/graphql/schema/resolvers/singular/resolveGet.js +21 -0
- package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.d.ts +8 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.js +21 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -0
- package/graphql/schema/schemaPlugins.d.ts +8 -0
- package/graphql/schema/schemaPlugins.js +123 -0
- package/graphql/schema/schemaPlugins.js.map +1 -0
- package/graphql/system.d.ts +3 -0
- package/graphql/system.js +80 -0
- package/graphql/system.js.map +1 -0
- package/graphqlFields/boolean.d.ts +2 -0
- package/graphqlFields/boolean.js +59 -0
- package/graphqlFields/boolean.js.map +1 -0
- package/graphqlFields/datetime.d.ts +2 -0
- package/graphqlFields/datetime.js +78 -0
- package/graphqlFields/datetime.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +320 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +1 -0
- package/graphqlFields/dynamicZone/index.js +14 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/file.d.ts +2 -0
- package/graphqlFields/file.js +44 -0
- package/graphqlFields/file.js.map +1 -0
- package/graphqlFields/helpers.d.ts +5 -0
- package/graphqlFields/helpers.js +27 -0
- package/graphqlFields/helpers.js.map +1 -0
- package/graphqlFields/index.d.ts +2 -0
- package/graphqlFields/index.js +22 -0
- package/graphqlFields/index.js.map +1 -0
- package/graphqlFields/json.d.ts +2 -0
- package/graphqlFields/json.js +49 -0
- package/graphqlFields/json.js.map +1 -0
- package/graphqlFields/longText.d.ts +2 -0
- package/graphqlFields/longText.js +64 -0
- package/graphqlFields/longText.js.map +1 -0
- package/graphqlFields/number.d.ts +2 -0
- package/graphqlFields/number.js +70 -0
- package/graphqlFields/number.js.map +1 -0
- package/graphqlFields/object.d.ts +2 -0
- package/graphqlFields/object.js +252 -0
- package/graphqlFields/object.js.map +1 -0
- package/graphqlFields/ref.d.ts +2 -0
- package/graphqlFields/ref.js +267 -0
- package/graphqlFields/ref.js.map +1 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +6 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js +34 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -0
- package/graphqlFields/richText/richTextResolver.d.ts +7 -0
- package/graphqlFields/richText/richTextResolver.js +24 -0
- package/graphqlFields/richText/richTextResolver.js.map +1 -0
- package/graphqlFields/richText.d.ts +2 -0
- package/graphqlFields/richText.js +55 -0
- package/graphqlFields/richText.js.map +1 -0
- package/graphqlFields/searchableJson.d.ts +2 -0
- package/graphqlFields/searchableJson.js +60 -0
- package/graphqlFields/searchableJson.js.map +1 -0
- package/graphqlFields/text.d.ts +2 -0
- package/graphqlFields/text.js +66 -0
- package/graphqlFields/text.js.map +1 -0
- package/htmlRenderer/LexicalRenderer.d.ts +5 -0
- package/htmlRenderer/LexicalRenderer.js +28 -0
- package/htmlRenderer/LexicalRenderer.js.map +1 -0
- package/htmlRenderer/createLexicalHTMLRenderer.d.ts +2 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js +31 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -0
- package/index.d.ts +19 -12
- package/index.js +172 -54
- package/index.js.map +1 -0
- package/modelManager/DefaultCmsModelManager.d.ts +15 -0
- package/modelManager/DefaultCmsModelManager.js +49 -0
- package/modelManager/DefaultCmsModelManager.js.map +1 -0
- package/modelManager/SingletonModelManager.d.ts +12 -0
- package/modelManager/SingletonModelManager.js +48 -0
- package/modelManager/SingletonModelManager.js.map +1 -0
- package/modelManager/index.d.ts +3 -0
- package/modelManager/index.js +33 -0
- package/modelManager/index.js.map +1 -0
- package/package.json +42 -47
- package/parameters/context.d.ts +2 -0
- package/parameters/context.js +20 -0
- package/parameters/context.js.map +1 -0
- package/parameters/header.d.ts +2 -0
- package/parameters/header.js +45 -0
- package/parameters/header.js.map +1 -0
- package/parameters/index.d.ts +4 -0
- package/parameters/index.js +51 -0
- package/parameters/index.js.map +1 -0
- package/parameters/manual.d.ts +7 -0
- package/parameters/manual.js +42 -0
- package/parameters/manual.js.map +1 -0
- package/parameters/path.d.ts +2 -0
- package/parameters/path.js +41 -0
- package/parameters/path.js.map +1 -0
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +9 -0
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js +17 -0
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaPlugin/index.d.ts +1 -0
- package/plugins/CmsGraphQLSchemaPlugin/index.js +18 -0
- package/plugins/CmsGraphQLSchemaPlugin/index.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +27 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.d.ts +24 -0
- package/plugins/CmsGroupPlugin.js +40 -0
- package/plugins/CmsGroupPlugin.js.map +1 -0
- package/plugins/CmsModelFieldConverterPlugin.d.ts +17 -0
- package/plugins/CmsModelFieldConverterPlugin.js +17 -0
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
- package/plugins/CmsModelPlugin.d.ts +85 -0
- package/plugins/CmsModelPlugin.js +295 -0
- package/plugins/CmsModelPlugin.js.map +1 -0
- package/plugins/CmsParametersPlugin.d.ts +20 -0
- package/plugins/CmsParametersPlugin.js +24 -0
- package/plugins/CmsParametersPlugin.js.map +1 -0
- package/plugins/CmsRichTextRendererPlugin.d.ts +24 -0
- package/plugins/CmsRichTextRendererPlugin.js +28 -0
- package/plugins/CmsRichTextRendererPlugin.js.map +1 -0
- package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
- package/plugins/StorageOperationsCmsModelPlugin.js +41 -0
- package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
- package/plugins/StorageTransformPlugin.d.ts +35 -0
- package/plugins/StorageTransformPlugin.js +35 -0
- package/plugins/StorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +9 -0
- package/plugins/index.js +106 -0
- package/plugins/index.js.map +1 -0
- package/storage/date.d.ts +3 -0
- package/storage/date.js +119 -0
- package/storage/date.js.map +1 -0
- package/storage/default.d.ts +2 -0
- package/storage/default.js +26 -0
- package/storage/default.js.map +1 -0
- package/storage/dynamicZone.d.ts +2 -0
- package/storage/dynamicZone.js +157 -0
- package/storage/dynamicZone.js.map +1 -0
- package/storage/index.d.ts +1 -0
- package/storage/index.js +21 -0
- package/storage/index.js.map +1 -0
- package/storage/json.d.ts +2 -0
- package/storage/json.js +56 -0
- package/storage/json.js.map +1 -0
- package/storage/object.d.ts +2 -0
- package/storage/object.js +112 -0
- package/storage/object.js.map +1 -0
- package/types/context.d.ts +146 -0
- package/types/context.js +7 -0
- package/types/context.js.map +1 -0
- package/types/fields/dynamicZoneField.d.ts +23 -0
- package/types/fields/dynamicZoneField.js +7 -0
- package/types/fields/dynamicZoneField.js.map +1 -0
- package/types/fields/objectField.d.ts +13 -0
- package/types/fields/objectField.js +7 -0
- package/types/fields/objectField.js.map +1 -0
- package/types/identity.d.ts +19 -0
- package/types/identity.js +7 -0
- package/types/identity.js.map +1 -0
- package/types/index.d.ts +10 -0
- package/types/index.js +117 -0
- package/types/index.js.map +1 -0
- package/types/model.d.ts +199 -0
- package/types/model.js +7 -0
- package/types/model.js.map +1 -0
- package/types/modelAst.d.ts +39 -0
- package/types/modelAst.js +7 -0
- package/types/modelAst.js.map +1 -0
- package/types/modelField.d.ts +330 -0
- package/types/modelField.js +7 -0
- package/types/modelField.js.map +1 -0
- package/types/modelGroup.d.ts +77 -0
- package/types/modelGroup.js +7 -0
- package/types/modelGroup.js.map +1 -0
- package/types/plugins.d.ts +365 -0
- package/types/plugins.js +7 -0
- package/types/plugins.js.map +1 -0
- package/types/types.d.ts +1897 -0
- package/types/types.js +308 -0
- package/types/types.js.map +1 -0
- package/utils/RichTextRenderer.d.ts +10 -0
- package/utils/RichTextRenderer.js +33 -0
- package/utils/RichTextRenderer.js.map +1 -0
- package/utils/caching/Cache.d.ts +5 -0
- package/utils/caching/Cache.js +48 -0
- package/utils/caching/Cache.js.map +1 -0
- package/utils/caching/CacheKey.d.ts +3 -0
- package/utils/caching/CacheKey.js +28 -0
- package/utils/caching/CacheKey.js.map +1 -0
- package/utils/caching/index.d.ts +2 -0
- package/utils/caching/index.js +29 -0
- package/utils/caching/index.js.map +1 -0
- package/utils/caching/types.d.ts +13 -0
- package/utils/caching/types.js +14 -0
- package/utils/caching/types.js.map +1 -0
- package/utils/contentEntryTraverser/ContentEntryTraverser.d.ts +13 -0
- package/utils/contentEntryTraverser/ContentEntryTraverser.js +97 -0
- package/utils/contentEntryTraverser/ContentEntryTraverser.js.map +1 -0
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +6 -0
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js +23 -0
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -0
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +7 -0
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js +22 -0
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -0
- package/utils/contentModelAst/CmsModelToAstConverter.d.ts +11 -0
- package/utils/contentModelAst/CmsModelToAstConverter.js +28 -0
- package/utils/contentModelAst/CmsModelToAstConverter.js.map +1 -0
- package/utils/contentModelAst/index.d.ts +3 -0
- package/utils/contentModelAst/index.js +40 -0
- package/utils/contentModelAst/index.js.map +1 -0
- package/utils/converters/Converter.d.ts +27 -0
- package/utils/converters/Converter.js +57 -0
- package/utils/converters/Converter.js.map +1 -0
- package/utils/converters/ConverterCollection.d.ts +31 -0
- package/utils/converters/ConverterCollection.js +125 -0
- package/utils/converters/ConverterCollection.js.map +1 -0
- package/utils/converters/valueKeyStorageConverter.d.ts +14 -0
- package/utils/converters/valueKeyStorageConverter.js +135 -0
- package/utils/converters/valueKeyStorageConverter.js.map +1 -0
- package/utils/createModelField.d.ts +7 -0
- package/utils/createModelField.js +51 -0
- package/utils/createModelField.js.map +1 -0
- package/utils/createTypeFromFields.d.ts +16 -0
- package/utils/createTypeFromFields.js +71 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.d.ts +1 -0
- package/utils/createTypeName.js +15 -0
- package/utils/createTypeName.js.map +1 -0
- package/utils/date.d.ts +10 -0
- package/utils/date.js +36 -0
- package/utils/date.js.map +1 -0
- package/utils/entryStorage.d.ts +29 -0
- package/utils/entryStorage.js +140 -0
- package/utils/entryStorage.js.map +1 -0
- package/utils/filterAsync.d.ts +1 -0
- package/utils/filterAsync.js +19 -0
- package/utils/filterAsync.js.map +1 -0
- package/utils/getBaseFieldType.d.ts +2 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getEntryDescription.d.ts +2 -0
- package/utils/getEntryDescription.js +19 -0
- package/utils/getEntryDescription.js.map +1 -0
- package/utils/getEntryImage.d.ts +2 -0
- package/utils/getEntryImage.js +19 -0
- package/utils/getEntryImage.js.map +1 -0
- package/utils/getEntryTitle.d.ts +2 -0
- package/utils/getEntryTitle.js +36 -0
- package/utils/getEntryTitle.js.map +1 -0
- package/utils/getSchemaFromFieldPlugins.d.ts +20 -0
- package/utils/getSchemaFromFieldPlugins.js +58 -0
- package/utils/getSchemaFromFieldPlugins.js.map +1 -0
- package/utils/identity.d.ts +2 -0
- package/utils/identity.js +20 -0
- package/utils/identity.js.map +1 -0
- package/utils/incrementEntryIdVersion.d.ts +5 -0
- package/utils/incrementEntryIdVersion.js +31 -0
- package/utils/incrementEntryIdVersion.js.map +1 -0
- package/utils/index.d.ts +2 -0
- package/utils/index.js +29 -0
- package/utils/index.js.map +1 -0
- package/utils/isHeadlessCmsReady.d.ts +2 -0
- package/utils/isHeadlessCmsReady.js +23 -0
- package/utils/isHeadlessCmsReady.js.map +1 -0
- package/utils/modelFieldTraverser/ModelFieldTraverser.d.ts +16 -0
- package/utils/modelFieldTraverser/ModelFieldTraverser.js +41 -0
- package/utils/modelFieldTraverser/ModelFieldTraverser.js.map +1 -0
- package/utils/modelFieldTraverser/index.d.ts +1 -0
- package/utils/modelFieldTraverser/index.js +18 -0
- package/utils/modelFieldTraverser/index.js.map +1 -0
- package/utils/renderFields.d.ts +17 -0
- package/utils/renderFields.js +58 -0
- package/utils/renderFields.js.map +1 -0
- package/utils/renderGetFilterFields.d.ts +10 -0
- package/utils/renderGetFilterFields.js +36 -0
- package/utils/renderGetFilterFields.js.map +1 -0
- package/utils/renderInputFields.d.ts +16 -0
- package/utils/renderInputFields.js +60 -0
- package/utils/renderInputFields.js.map +1 -0
- package/utils/renderListFilterFields.d.ts +13 -0
- package/utils/renderListFilterFields.js +56 -0
- package/utils/renderListFilterFields.js.map +1 -0
- package/utils/renderSortEnum.d.ts +13 -0
- package/utils/renderSortEnum.js +49 -0
- package/utils/renderSortEnum.js.map +1 -0
- package/utils/toSlug.d.ts +1 -0
- package/utils/toSlug.js +18 -0
- package/utils/toSlug.js.map +1 -0
- package/validators/dateGte.d.ts +2 -0
- package/validators/dateGte.js +32 -0
- package/validators/dateGte.js.map +1 -0
- package/validators/dateLte.d.ts +2 -0
- package/validators/dateLte.js +32 -0
- package/validators/dateLte.js.map +1 -0
- package/validators/gte.d.ts +2 -0
- package/validators/gte.js +29 -0
- package/validators/gte.js.map +1 -0
- package/validators/in.d.ts +2 -0
- package/validators/in.js +29 -0
- package/validators/in.js.map +1 -0
- package/validators/index.d.ts +1 -0
- package/validators/index.js +23 -0
- package/validators/index.js.map +1 -0
- package/validators/lte.d.ts +2 -0
- package/validators/lte.js +29 -0
- package/validators/lte.js.map +1 -0
- package/validators/maxLength.d.ts +2 -0
- package/validators/maxLength.js +29 -0
- package/validators/maxLength.js.map +1 -0
- package/validators/minLength.d.ts +2 -0
- package/validators/minLength.js +29 -0
- package/validators/minLength.js.map +1 -0
- package/validators/pattern.d.ts +2 -0
- package/validators/pattern.js +43 -0
- package/validators/pattern.js.map +1 -0
- package/validators/patternPlugins/email.d.ts +2 -0
- package/validators/patternPlugins/email.js +20 -0
- package/validators/patternPlugins/email.js.map +1 -0
- package/validators/patternPlugins/index.d.ts +2 -0
- package/validators/patternPlugins/index.js +18 -0
- package/validators/patternPlugins/index.js.map +1 -0
- package/validators/patternPlugins/lowerCase.d.ts +2 -0
- package/validators/patternPlugins/lowerCase.js +20 -0
- package/validators/patternPlugins/lowerCase.js.map +1 -0
- package/validators/patternPlugins/lowerCaseSpace.d.ts +2 -0
- package/validators/patternPlugins/lowerCaseSpace.js +20 -0
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
- package/validators/patternPlugins/upperCase.d.ts +2 -0
- package/validators/patternPlugins/upperCase.js +20 -0
- package/validators/patternPlugins/upperCase.js.map +1 -0
- package/validators/patternPlugins/upperCaseSpace.d.ts +2 -0
- package/validators/patternPlugins/upperCaseSpace.js +20 -0
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -0
- package/validators/patternPlugins/url.d.ts +2 -0
- package/validators/patternPlugins/url.js +20 -0
- package/validators/patternPlugins/url.js.map +1 -0
- package/validators/required.d.ts +2 -0
- package/validators/required.js +24 -0
- package/validators/required.js.map +1 -0
- package/validators/timeGte.d.ts +2 -0
- package/validators/timeGte.js +27 -0
- package/validators/timeGte.js.map +1 -0
- package/validators/timeLte.d.ts +2 -0
- package/validators/timeLte.js +27 -0
- package/validators/timeLte.js.map +1 -0
- package/validators/unique.d.ts +6 -0
- package/validators/unique.js +58 -0
- package/validators/unique.js.map +1 -0
- package/content/contextSetup.d.ts +0 -4
- package/content/contextSetup.js +0 -65
- package/content/graphQLHandlerFactory.d.ts +0 -5
- package/content/graphQLHandlerFactory.js +0 -173
- package/content/plugins/CmsGroupPlugin.d.ts +0 -11
- package/content/plugins/CmsGroupPlugin.js +0 -24
- package/content/plugins/CmsModelPlugin.d.ts +0 -11
- package/content/plugins/CmsModelPlugin.js +0 -24
- package/content/plugins/buildSchemaPlugins.d.ts +0 -7
- package/content/plugins/buildSchemaPlugins.js +0 -29
- package/content/plugins/crud/contentEntry/afterDelete.d.ts +0 -7
- package/content/plugins/crud/contentEntry/afterDelete.js +0 -41
- package/content/plugins/crud/contentEntry/beforeCreate.d.ts +0 -7
- package/content/plugins/crud/contentEntry/beforeCreate.js +0 -28
- package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +0 -7
- package/content/plugins/crud/contentEntry/beforeUpdate.js +0 -28
- package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +0 -4
- package/content/plugins/crud/contentEntry/entryDataValidation.js +0 -188
- package/content/plugins/crud/contentEntry/markLockedFields.d.ts +0 -12
- package/content/plugins/crud/contentEntry/markLockedFields.js +0 -117
- package/content/plugins/crud/contentEntry.crud.d.ts +0 -17
- package/content/plugins/crud/contentEntry.crud.js +0 -931
- package/content/plugins/crud/contentModel/afterCreate.d.ts +0 -7
- package/content/plugins/crud/contentModel/afterCreate.js +0 -18
- package/content/plugins/crud/contentModel/afterDelete.d.ts +0 -7
- package/content/plugins/crud/contentModel/afterDelete.js +0 -18
- package/content/plugins/crud/contentModel/afterUpdate.d.ts +0 -7
- package/content/plugins/crud/contentModel/afterUpdate.js +0 -18
- package/content/plugins/crud/contentModel/beforeCreate.d.ts +0 -9
- package/content/plugins/crud/contentModel/beforeCreate.js +0 -146
- package/content/plugins/crud/contentModel/beforeDelete.d.ts +0 -9
- package/content/plugins/crud/contentModel/beforeDelete.js +0 -56
- package/content/plugins/crud/contentModel/beforeUpdate.d.ts +0 -9
- package/content/plugins/crud/contentModel/beforeUpdate.js +0 -128
- package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +0 -2
- package/content/plugins/crud/contentModel/contentModelManagerFactory.js +0 -29
- package/content/plugins/crud/contentModel/createFieldModels.d.ts +0 -2
- package/content/plugins/crud/contentModel/createFieldModels.js +0 -22
- package/content/plugins/crud/contentModel/idValidation.d.ts +0 -2
- package/content/plugins/crud/contentModel/idValidation.js +0 -22
- package/content/plugins/crud/contentModel/models.d.ts +0 -3
- package/content/plugins/crud/contentModel/models.js +0 -141
- package/content/plugins/crud/contentModel/validateLayout.d.ts +0 -2
- package/content/plugins/crud/contentModel/validateLayout.js +0 -38
- package/content/plugins/crud/contentModel.crud.d.ts +0 -12
- package/content/plugins/crud/contentModel.crud.js +0 -425
- package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +0 -9
- package/content/plugins/crud/contentModelGroup/beforeCreate.js +0 -66
- package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +0 -9
- package/content/plugins/crud/contentModelGroup/beforeDelete.js +0 -48
- package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +0 -8
- package/content/plugins/crud/contentModelGroup/beforeUpdate.js +0 -28
- package/content/plugins/crud/contentModelGroup.crud.d.ts +0 -12
- package/content/plugins/crud/contentModelGroup.crud.js +0 -351
- package/content/plugins/crud/index.d.ts +0 -6
- package/content/plugins/crud/index.js +0 -100
- package/content/plugins/graphqlFields/boolean.d.ts +0 -3
- package/content/plugins/graphqlFields/boolean.js +0 -69
- package/content/plugins/graphqlFields/datetime.d.ts +0 -3
- package/content/plugins/graphqlFields/datetime.js +0 -83
- package/content/plugins/graphqlFields/file.d.ts +0 -3
- package/content/plugins/graphqlFields/file.js +0 -49
- package/content/plugins/graphqlFields/index.d.ts +0 -2
- package/content/plugins/graphqlFields/index.js +0 -30
- package/content/plugins/graphqlFields/longText.d.ts +0 -3
- package/content/plugins/graphqlFields/longText.js +0 -62
- package/content/plugins/graphqlFields/number.d.ts +0 -3
- package/content/plugins/graphqlFields/number.js +0 -75
- package/content/plugins/graphqlFields/object.d.ts +0 -3
- package/content/plugins/graphqlFields/object.js +0 -180
- package/content/plugins/graphqlFields/ref.d.ts +0 -3
- package/content/plugins/graphqlFields/ref.js +0 -205
- package/content/plugins/graphqlFields/richText.d.ts +0 -3
- package/content/plugins/graphqlFields/richText.js +0 -55
- package/content/plugins/graphqlFields/text.d.ts +0 -3
- package/content/plugins/graphqlFields/text.js +0 -72
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +0 -8
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +0 -54
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +0 -7
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +0 -35
- package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +0 -15
- package/content/plugins/modelManager/DefaultCmsModelManager.js +0 -62
- package/content/plugins/modelManager/index.d.ts +0 -3
- package/content/plugins/modelManager/index.js +0 -20
- package/content/plugins/schema/baseSchema.d.ts +0 -4
- package/content/plugins/schema/baseSchema.js +0 -98
- package/content/plugins/schema/contentEntries.d.ts +0 -4
- package/content/plugins/schema/contentEntries.js +0 -166
- package/content/plugins/schema/contentModelGroups.d.ts +0 -4
- package/content/plugins/schema/contentModelGroups.js +0 -153
- package/content/plugins/schema/contentModels.d.ts +0 -4
- package/content/plugins/schema/contentModels.js +0 -225
- package/content/plugins/schema/createFieldResolvers.d.ts +0 -19
- package/content/plugins/schema/createFieldResolvers.js +0 -92
- package/content/plugins/schema/createManageResolvers.d.ts +0 -11
- package/content/plugins/schema/createManageResolvers.js +0 -135
- package/content/plugins/schema/createManageSDL.d.ts +0 -9
- package/content/plugins/schema/createManageSDL.js +0 -153
- package/content/plugins/schema/createPreviewResolvers.d.ts +0 -10
- package/content/plugins/schema/createPreviewResolvers.js +0 -55
- package/content/plugins/schema/createReadResolvers.d.ts +0 -10
- package/content/plugins/schema/createReadResolvers.js +0 -55
- package/content/plugins/schema/createReadSDL.d.ts +0 -9
- package/content/plugins/schema/createReadSDL.js +0 -96
- package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +0 -6
- package/content/plugins/schema/resolvers/commonFieldResolvers.js +0 -14
- package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +0 -6
- package/content/plugins/schema/resolvers/manage/resolveCreate.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +0 -7
- package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveDelete.js +0 -30
- package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveGet.js +0 -21
- package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveList.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveList.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolvePublish.js +0 -21
- package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -6
- package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +0 -6
- package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +0 -23
- package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +0 -2
- package/content/plugins/schema/resolvers/manage/resolveUnpublish.js +0 -21
- package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +0 -7
- package/content/plugins/schema/resolvers/manage/resolveUpdate.js +0 -23
- package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +0 -2
- package/content/plugins/schema/resolvers/preview/resolveGet.js +0 -38
- package/content/plugins/schema/resolvers/preview/resolveList.d.ts +0 -2
- package/content/plugins/schema/resolvers/preview/resolveList.js +0 -23
- package/content/plugins/schema/resolvers/read/resolveGet.d.ts +0 -2
- package/content/plugins/schema/resolvers/read/resolveGet.js +0 -38
- package/content/plugins/schema/resolvers/read/resolveList.d.ts +0 -2
- package/content/plugins/schema/resolvers/read/resolveList.js +0 -23
- package/content/plugins/schema/schemaPlugins.d.ts +0 -3
- package/content/plugins/schema/schemaPlugins.js +0 -92
- package/content/plugins/storage/StorageTransformPlugin.d.ts +0 -30
- package/content/plugins/storage/StorageTransformPlugin.js +0 -36
- package/content/plugins/storage/default.d.ts +0 -3
- package/content/plugins/storage/default.js +0 -28
- package/content/plugins/storage/object.d.ts +0 -3
- package/content/plugins/storage/object.js +0 -119
- package/content/plugins/utils/createTypeName.d.ts +0 -3
- package/content/plugins/utils/createTypeName.js +0 -28
- package/content/plugins/utils/entryStorage.d.ts +0 -17
- package/content/plugins/utils/entryStorage.js +0 -125
- package/content/plugins/utils/getEntryTitle.d.ts +0 -2
- package/content/plugins/utils/getEntryTitle.js +0 -42
- package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +0 -11
- package/content/plugins/utils/getSchemaFromFieldPlugins.js +0 -30
- package/content/plugins/utils/pluralizedTypeName.d.ts +0 -1
- package/content/plugins/utils/pluralizedTypeName.js +0 -26
- package/content/plugins/utils/renderFields.d.ts +0 -16
- package/content/plugins/utils/renderFields.js +0 -51
- package/content/plugins/utils/renderGetFilterFields.d.ts +0 -9
- package/content/plugins/utils/renderGetFilterFields.js +0 -41
- package/content/plugins/utils/renderInputFields.d.ts +0 -14
- package/content/plugins/utils/renderInputFields.js +0 -53
- package/content/plugins/utils/renderListFilterFields.d.ts +0 -10
- package/content/plugins/utils/renderListFilterFields.js +0 -39
- package/content/plugins/utils/renderSortEnum.d.ts +0 -9
- package/content/plugins/utils/renderSortEnum.js +0 -32
- package/content/plugins/validators/dateGte.d.ts +0 -3
- package/content/plugins/validators/dateGte.js +0 -37
- package/content/plugins/validators/dateLte.d.ts +0 -3
- package/content/plugins/validators/dateLte.js +0 -37
- package/content/plugins/validators/gte.d.ts +0 -3
- package/content/plugins/validators/gte.js +0 -32
- package/content/plugins/validators/in.d.ts +0 -3
- package/content/plugins/validators/in.js +0 -32
- package/content/plugins/validators/index.d.ts +0 -2
- package/content/plugins/validators/index.js +0 -36
- package/content/plugins/validators/lte.d.ts +0 -3
- package/content/plugins/validators/lte.js +0 -32
- package/content/plugins/validators/maxLength.d.ts +0 -3
- package/content/plugins/validators/maxLength.js +0 -32
- package/content/plugins/validators/minLength.d.ts +0 -3
- package/content/plugins/validators/minLength.js +0 -32
- package/content/plugins/validators/pattern.d.ts +0 -3
- package/content/plugins/validators/pattern.js +0 -47
- package/content/plugins/validators/patternPlugins/email.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/email.js +0 -17
- package/content/plugins/validators/patternPlugins/index.d.ts +0 -2
- package/content/plugins/validators/patternPlugins/index.js +0 -19
- package/content/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/lowerCase.js +0 -17
- package/content/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/upperCase.js +0 -17
- package/content/plugins/validators/patternPlugins/url.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/url.js +0 -17
- package/content/plugins/validators/required.d.ts +0 -3
- package/content/plugins/validators/required.js +0 -25
- package/content/plugins/validators/timeGte.d.ts +0 -3
- package/content/plugins/validators/timeGte.js +0 -32
- package/content/plugins/validators/timeLte.d.ts +0 -3
- package/content/plugins/validators/timeLte.js +0 -32
- package/migrateCMSPermissions.d.ts +0 -17
- package/migrateCMSPermissions.js +0 -193
- package/plugins/context.d.ts +0 -4
- package/plugins/context.js +0 -34
- package/plugins/crud/index.d.ts +0 -6
- package/plugins/crud/index.js +0 -100
- package/plugins/crud/settings.crud.d.ts +0 -10
- package/plugins/crud/settings.crud.js +0 -93
- package/plugins/crud/system.crud.d.ts +0 -10
- package/plugins/crud/system.crud.js +0 -182
- package/plugins/graphql/system.d.ts +0 -17
- package/plugins/graphql/system.js +0 -72
- package/plugins/graphql.d.ts +0 -2
- package/plugins/graphql.js +0 -79
- package/plugins/upgrades/index.d.ts +0 -2
- package/plugins/upgrades/index.js +0 -14
- package/plugins/upgrades/v5.5.0/helpers.d.ts +0 -6
- package/plugins/upgrades/v5.5.0/helpers.js +0 -10
- package/plugins/upgrades/v5.5.0/index.d.ts +0 -4
- package/plugins/upgrades/v5.5.0/index.js +0 -129
- package/transformers.d.ts +0 -2
- package/transformers.js +0 -25
- package/types.d.ts +0 -2149
- package/types.js +0 -366
- package/utils.d.ts +0 -25
- package/utils.js +0 -251
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AccessControl = void 0;
|
|
7
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
+
class AccessControl {
|
|
9
|
+
constructor({
|
|
10
|
+
getIdentity,
|
|
11
|
+
getGroupsPermissions,
|
|
12
|
+
getModelsPermissions,
|
|
13
|
+
getEntriesPermissions,
|
|
14
|
+
listAllGroups
|
|
15
|
+
}) {
|
|
16
|
+
this.getIdentity = getIdentity;
|
|
17
|
+
this.getGroupsPermissions = getGroupsPermissions;
|
|
18
|
+
this.getModelsPermissions = getModelsPermissions;
|
|
19
|
+
this.getEntriesPermissions = getEntriesPermissions;
|
|
20
|
+
this.fullAccessPermissions = ["*", "cms.*"];
|
|
21
|
+
this.listAllGroupsCallback = listAllGroups;
|
|
22
|
+
this.allGroups = null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Groups-related methods below. 👇
|
|
27
|
+
* - canAccessGroup
|
|
28
|
+
* - ensureCanAccessGroup
|
|
29
|
+
* - canAccessNonOwnedGroups
|
|
30
|
+
* - canAccessOnlyOwnedGroups
|
|
31
|
+
* - getGroupsAccessControlList
|
|
32
|
+
* - hasFullAccessToGroups
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
async canAccessGroup(params = {}) {
|
|
36
|
+
const acl = await this.getGroupsAccessControlList(params);
|
|
37
|
+
const canRead = acl.find(ace => ace.rwd?.includes("r"));
|
|
38
|
+
if (!canRead) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const {
|
|
42
|
+
rwd
|
|
43
|
+
} = params;
|
|
44
|
+
if (rwd) {
|
|
45
|
+
const hasRwd = acl.find(ace => ace.rwd.includes(rwd));
|
|
46
|
+
if (!hasRwd) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
async ensureCanAccessGroup(params = {}) {
|
|
53
|
+
const canAccess = await this.canAccessGroup(params);
|
|
54
|
+
if (canAccess) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if ("group" in params) {
|
|
58
|
+
let groupName = "(could not determine name)";
|
|
59
|
+
if (params.group?.name) {
|
|
60
|
+
groupName = `"${params.group.name}"`;
|
|
61
|
+
}
|
|
62
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
63
|
+
data: {
|
|
64
|
+
reason: `Not allowed to access content model group ${groupName}.`
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
69
|
+
data: {
|
|
70
|
+
reason: `Not allowed to access content model groups.`
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async canAccessNonOwnedGroups(params) {
|
|
75
|
+
const acl = await this.getGroupsAccessControlList(params);
|
|
76
|
+
return acl.some(ace => ace.canAccessNonOwned);
|
|
77
|
+
}
|
|
78
|
+
async canAccessOnlyOwnedGroups(params) {
|
|
79
|
+
const canAccessNonOwned = await this.canAccessNonOwnedGroups(params);
|
|
80
|
+
return !canAccessNonOwned;
|
|
81
|
+
}
|
|
82
|
+
async getGroupsAccessControlList(params) {
|
|
83
|
+
if (await this.hasFullAccessToGroups()) {
|
|
84
|
+
return [{
|
|
85
|
+
rwd: "rwd",
|
|
86
|
+
canAccessNonOwned: true,
|
|
87
|
+
canAccessOnlyOwned: false
|
|
88
|
+
}];
|
|
89
|
+
}
|
|
90
|
+
const groupsPermissionsList = await this.getGroupsPermissions();
|
|
91
|
+
const acl = [];
|
|
92
|
+
for (const groupsPermissions of groupsPermissionsList) {
|
|
93
|
+
if (groupsPermissions.own) {
|
|
94
|
+
if ("group" in params) {
|
|
95
|
+
const modelGroupCreatedBy = params.group?.createdBy;
|
|
96
|
+
if (!modelGroupCreatedBy) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const identity = await this.getIdentity();
|
|
100
|
+
if (modelGroupCreatedBy.id !== identity.id) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
acl.push({
|
|
105
|
+
rwd: "rwd",
|
|
106
|
+
canAccessNonOwned: false,
|
|
107
|
+
canAccessOnlyOwned: true
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (groupsPermissions.groups) {
|
|
111
|
+
if ("group" in params) {
|
|
112
|
+
const {
|
|
113
|
+
group
|
|
114
|
+
} = params;
|
|
115
|
+
if (!group) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const {
|
|
119
|
+
groups
|
|
120
|
+
} = groupsPermissions;
|
|
121
|
+
if (!Array.isArray(groups[group.locale])) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (!groups[group.locale].includes(group.id)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
acl.push({
|
|
130
|
+
rwd: groupsPermissions.rwd,
|
|
131
|
+
canAccessNonOwned: true,
|
|
132
|
+
canAccessOnlyOwned: false
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return acl;
|
|
136
|
+
}
|
|
137
|
+
async hasFullAccessToGroups() {
|
|
138
|
+
const permissions = await this.getGroupsPermissions();
|
|
139
|
+
return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Models-related methods below. 👇
|
|
144
|
+
* - canAccessModel
|
|
145
|
+
* - ensureCanAccessModel
|
|
146
|
+
* - canAccessNonOwnedModels
|
|
147
|
+
* - canAccessOnlyOwnedModels
|
|
148
|
+
* - getModelsAccessControlList
|
|
149
|
+
* - hasFullAccessToModels
|
|
150
|
+
*/
|
|
151
|
+
|
|
152
|
+
async canAccessModel(params) {
|
|
153
|
+
const acl = await this.getModelsAccessControlList(params);
|
|
154
|
+
const canRead = acl.find(ace => ace.rwd.includes("r"));
|
|
155
|
+
if (!canRead) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
const {
|
|
159
|
+
rwd
|
|
160
|
+
} = params;
|
|
161
|
+
if (rwd) {
|
|
162
|
+
const hasRwd = acl.find(ace => ace.rwd.includes(rwd));
|
|
163
|
+
if (!hasRwd) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
async ensureCanAccessModel(params = {}) {
|
|
170
|
+
const canAccess = await this.canAccessModel(params);
|
|
171
|
+
if (canAccess) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if ("model" in params) {
|
|
175
|
+
let modelName = "(could not determine name)";
|
|
176
|
+
if (params.model?.name) {
|
|
177
|
+
modelName = `"${params.model.name}"`;
|
|
178
|
+
}
|
|
179
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
180
|
+
data: {
|
|
181
|
+
reason: `Not allowed to access content model ${modelName}.`
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
186
|
+
data: {
|
|
187
|
+
reason: `Not allowed to access content models.`
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
async canAccessNonOwnedModels(params) {
|
|
192
|
+
const acl = await this.getModelsAccessControlList(params);
|
|
193
|
+
return acl.some(ace => ace.canAccessNonOwned);
|
|
194
|
+
}
|
|
195
|
+
async canAccessOnlyOwnedModels(params) {
|
|
196
|
+
const canAccessNonOwned = await this.canAccessNonOwnedModels(params);
|
|
197
|
+
return !canAccessNonOwned;
|
|
198
|
+
}
|
|
199
|
+
async getModelsAccessControlList(params) {
|
|
200
|
+
if (await this.hasFullAccessToModels(params)) {
|
|
201
|
+
return [{
|
|
202
|
+
rwd: "rwd",
|
|
203
|
+
canAccessNonOwned: true,
|
|
204
|
+
canAccessOnlyOwned: false
|
|
205
|
+
}];
|
|
206
|
+
}
|
|
207
|
+
const groupsPermissionsList = await this.getGroupsPermissions();
|
|
208
|
+
const acl = [];
|
|
209
|
+
for (let i = 0; i < groupsPermissionsList.length; i++) {
|
|
210
|
+
const groupsPermissions = groupsPermissionsList[i];
|
|
211
|
+
const modelsPermissionsList = await this.getModelsPermissions();
|
|
212
|
+
const relatedModelPermissions = modelsPermissionsList.find(permissions => permissions._src === groupsPermissions._src);
|
|
213
|
+
if (!relatedModelPermissions) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (groupsPermissions.own) {
|
|
217
|
+
if ("model" in params) {
|
|
218
|
+
const {
|
|
219
|
+
model
|
|
220
|
+
} = params;
|
|
221
|
+
if (!model) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const group = await this.getGroup(model.group.id);
|
|
225
|
+
if (!group) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const modelGroupCreatedBy = group.createdBy;
|
|
229
|
+
if (!modelGroupCreatedBy) {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const identity = await this.getIdentity();
|
|
233
|
+
if (modelGroupCreatedBy.id !== identity.id) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
acl.push({
|
|
238
|
+
rwd: "rwd",
|
|
239
|
+
canAccessNonOwned: false,
|
|
240
|
+
canAccessOnlyOwned: true
|
|
241
|
+
});
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (groupsPermissions.groups) {
|
|
245
|
+
if ("model" in params) {
|
|
246
|
+
const {
|
|
247
|
+
model
|
|
248
|
+
} = params;
|
|
249
|
+
if (!model) {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (!Array.isArray(groupsPermissions.groups[model.locale])) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (!groupsPermissions.groups[model.locale].includes(model.group.id)) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const fullAccess = !relatedModelPermissions.rwd && !relatedModelPermissions.own && !relatedModelPermissions.models;
|
|
261
|
+
if (fullAccess) {
|
|
262
|
+
acl.push({
|
|
263
|
+
rwd: "rwd",
|
|
264
|
+
canAccessNonOwned: true,
|
|
265
|
+
canAccessOnlyOwned: false
|
|
266
|
+
});
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (relatedModelPermissions.own) {
|
|
270
|
+
if ("model" in params) {
|
|
271
|
+
if (!params.model) {
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
const modelCreatedBy = params.model.createdBy;
|
|
275
|
+
if (!modelCreatedBy) {
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
const identity = await this.getIdentity();
|
|
279
|
+
if (modelCreatedBy.id !== identity.id) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
acl.push({
|
|
284
|
+
rwd: "rwd",
|
|
285
|
+
canAccessNonOwned: false,
|
|
286
|
+
canAccessOnlyOwned: true
|
|
287
|
+
});
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
if (relatedModelPermissions.models) {
|
|
291
|
+
const {
|
|
292
|
+
models
|
|
293
|
+
} = relatedModelPermissions;
|
|
294
|
+
if ("model" in params) {
|
|
295
|
+
if (!params.model) {
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
if (!Array.isArray(models[params.model.locale])) {
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (!models[params.model.locale].includes(params.model.modelId)) {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
acl.push({
|
|
307
|
+
rwd: relatedModelPermissions.rwd,
|
|
308
|
+
canAccessNonOwned: true,
|
|
309
|
+
canAccessOnlyOwned: false
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
return acl;
|
|
313
|
+
}
|
|
314
|
+
async hasFullAccessToModels(params) {
|
|
315
|
+
const {
|
|
316
|
+
model
|
|
317
|
+
} = params;
|
|
318
|
+
if (model) {
|
|
319
|
+
if (this.modelAuthorizationDisabled({
|
|
320
|
+
model
|
|
321
|
+
})) {
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const permissions = await this.getModelsPermissions();
|
|
326
|
+
return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Entries-related methods below. 👇
|
|
331
|
+
* - canAccessEntry
|
|
332
|
+
* - ensureCanAccessEntry
|
|
333
|
+
* - canAccessNonOwnedEntries
|
|
334
|
+
* - canAccessOnlyOwnedEntries
|
|
335
|
+
* - getEntriesAccessControlList
|
|
336
|
+
* - hasFullAccessToEntries
|
|
337
|
+
*/
|
|
338
|
+
|
|
339
|
+
async canAccessEntry(params) {
|
|
340
|
+
const acl = await this.getEntriesAccessControlList(params);
|
|
341
|
+
const canRead = acl.find(ace => ace.rwd.includes("r"));
|
|
342
|
+
if (!canRead) {
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
const {
|
|
346
|
+
rwd
|
|
347
|
+
} = params;
|
|
348
|
+
if (rwd) {
|
|
349
|
+
const hasRwd = acl.find(ace => ace.rwd.includes(rwd));
|
|
350
|
+
if (!hasRwd) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const {
|
|
355
|
+
pw
|
|
356
|
+
} = params;
|
|
357
|
+
if (pw) {
|
|
358
|
+
const hasPw = acl.find(ace => ace.pw?.includes(pw));
|
|
359
|
+
if (!hasPw) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
365
|
+
async ensureCanAccessEntry(params) {
|
|
366
|
+
const canAccess = await this.canAccessEntry(params);
|
|
367
|
+
if (!canAccess) {
|
|
368
|
+
if (params.entry) {
|
|
369
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
370
|
+
data: {
|
|
371
|
+
reason: `Not allowed to access entry "${params.entry.entryId}".`
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
376
|
+
data: {
|
|
377
|
+
reason: `Not allowed to access "${params.model.modelId}" entries.`
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
async canAccessNonOwnedEntries(params) {
|
|
383
|
+
const acl = await this.getEntriesAccessControlList(params);
|
|
384
|
+
return acl.some(ace => ace.canAccessNonOwned);
|
|
385
|
+
}
|
|
386
|
+
async canAccessOnlyOwnedEntries(params) {
|
|
387
|
+
const canAccessNonOwned = await this.canAccessNonOwnedEntries(params);
|
|
388
|
+
return !canAccessNonOwned;
|
|
389
|
+
}
|
|
390
|
+
async getEntriesAccessControlList(params) {
|
|
391
|
+
if (await this.hasFullAccessToEntries(params)) {
|
|
392
|
+
return [{
|
|
393
|
+
rwd: "rwd",
|
|
394
|
+
pw: "pu",
|
|
395
|
+
canAccessNonOwned: true,
|
|
396
|
+
canAccessOnlyOwned: false
|
|
397
|
+
}];
|
|
398
|
+
}
|
|
399
|
+
const {
|
|
400
|
+
model
|
|
401
|
+
} = params;
|
|
402
|
+
const groupsPermissionsList = await this.getGroupsPermissions();
|
|
403
|
+
const acl = [];
|
|
404
|
+
for (let i = 0; i < groupsPermissionsList.length; i++) {
|
|
405
|
+
const groupPermissions = groupsPermissionsList[i];
|
|
406
|
+
const modelsPermissionsList = await this.getModelsPermissions();
|
|
407
|
+
const relatedModelsPermissions = modelsPermissionsList.find(permissions => permissions._src === groupPermissions._src);
|
|
408
|
+
if (!relatedModelsPermissions) {
|
|
409
|
+
continue;
|
|
410
|
+
}
|
|
411
|
+
const entriesPermissionsList = await this.getEntriesPermissions();
|
|
412
|
+
const relatedEntriesPermissions = entriesPermissionsList.find(permissions => permissions._src === groupPermissions._src);
|
|
413
|
+
if (!relatedEntriesPermissions) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
if (groupPermissions.own) {
|
|
417
|
+
const group = await this.getGroup(model.group.id);
|
|
418
|
+
if (!group) {
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
const groupCreatedBy = group.createdBy;
|
|
422
|
+
if (!groupCreatedBy) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
const identity = await this.getIdentity();
|
|
426
|
+
if (groupCreatedBy.id !== identity.id) {
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
acl.push({
|
|
430
|
+
rwd: "rwd",
|
|
431
|
+
canAccessNonOwned: false,
|
|
432
|
+
canAccessOnlyOwned: true,
|
|
433
|
+
pw: relatedEntriesPermissions.pw
|
|
434
|
+
});
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
if (groupPermissions.groups) {
|
|
438
|
+
const {
|
|
439
|
+
groups
|
|
440
|
+
} = groupPermissions;
|
|
441
|
+
if (!Array.isArray(groups[model.locale])) {
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
if (!groups[model.locale].includes(model.group.id)) {
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
if (relatedModelsPermissions.own) {
|
|
449
|
+
const modelCreatedBy = model.createdBy;
|
|
450
|
+
if (!modelCreatedBy) {
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
const identity = await this.getIdentity();
|
|
454
|
+
if (modelCreatedBy.id !== identity.id) {
|
|
455
|
+
continue;
|
|
456
|
+
}
|
|
457
|
+
acl.push({
|
|
458
|
+
rwd: "rwd",
|
|
459
|
+
canAccessNonOwned: false,
|
|
460
|
+
canAccessOnlyOwned: true,
|
|
461
|
+
pw: relatedEntriesPermissions.pw
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
if (relatedModelsPermissions.models) {
|
|
465
|
+
if (!Array.isArray(relatedModelsPermissions.models[model.locale])) {
|
|
466
|
+
continue;
|
|
467
|
+
}
|
|
468
|
+
if (!relatedModelsPermissions.models[model.locale].includes(model.modelId)) {
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
const fullAccess = !relatedEntriesPermissions.rwd && !relatedEntriesPermissions.own && !relatedEntriesPermissions.models;
|
|
473
|
+
if (fullAccess) {
|
|
474
|
+
acl.push({
|
|
475
|
+
rwd: "rwd",
|
|
476
|
+
canAccessNonOwned: false,
|
|
477
|
+
canAccessOnlyOwned: true,
|
|
478
|
+
pw: "pu"
|
|
479
|
+
});
|
|
480
|
+
continue;
|
|
481
|
+
}
|
|
482
|
+
if (relatedEntriesPermissions.own) {
|
|
483
|
+
if ("entry" in params) {
|
|
484
|
+
const entryCreatedBy = params.entry?.createdBy;
|
|
485
|
+
if (!entryCreatedBy) {
|
|
486
|
+
continue;
|
|
487
|
+
}
|
|
488
|
+
const identity = await this.getIdentity();
|
|
489
|
+
if (entryCreatedBy.id !== identity.id) {
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
acl.push({
|
|
494
|
+
rwd: relatedEntriesPermissions.rwd,
|
|
495
|
+
canAccessNonOwned: false,
|
|
496
|
+
canAccessOnlyOwned: true,
|
|
497
|
+
pw: relatedEntriesPermissions.pw
|
|
498
|
+
});
|
|
499
|
+
continue;
|
|
500
|
+
}
|
|
501
|
+
acl.push({
|
|
502
|
+
rwd: relatedEntriesPermissions.rwd,
|
|
503
|
+
canAccessNonOwned: true,
|
|
504
|
+
canAccessOnlyOwned: false,
|
|
505
|
+
pw: relatedEntriesPermissions.pw
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
return acl;
|
|
509
|
+
}
|
|
510
|
+
async hasFullAccessToEntries(params) {
|
|
511
|
+
if (this.modelAuthorizationDisabled(params)) {
|
|
512
|
+
return true;
|
|
513
|
+
}
|
|
514
|
+
const permissions = await this.getEntriesPermissions();
|
|
515
|
+
return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));
|
|
516
|
+
}
|
|
517
|
+
modelAuthorizationDisabled(params) {
|
|
518
|
+
if ("authorization" in params.model) {
|
|
519
|
+
const {
|
|
520
|
+
authorization
|
|
521
|
+
} = params.model;
|
|
522
|
+
if (typeof authorization === "boolean") {
|
|
523
|
+
return authorization === false;
|
|
524
|
+
}
|
|
525
|
+
return authorization?.permissions === false;
|
|
526
|
+
}
|
|
527
|
+
return false;
|
|
528
|
+
}
|
|
529
|
+
async listAllGroups() {
|
|
530
|
+
if (this.allGroups === null) {
|
|
531
|
+
this.allGroups = this.listAllGroupsCallback();
|
|
532
|
+
}
|
|
533
|
+
return this.allGroups;
|
|
534
|
+
}
|
|
535
|
+
async getGroup(id) {
|
|
536
|
+
const groups = await this.listAllGroups();
|
|
537
|
+
return groups.find(group => group.id === id);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
exports.AccessControl = AccessControl;
|
|
541
|
+
|
|
542
|
+
//# sourceMappingURL=AccessControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_apiSecurity","require","AccessControl","constructor","getIdentity","getGroupsPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","fullAccessPermissions","listAllGroupsCallback","allGroups","canAccessGroup","params","acl","getGroupsAccessControlList","canRead","find","ace","rwd","includes","hasRwd","ensureCanAccessGroup","canAccess","groupName","group","name","NotAuthorizedError","data","reason","canAccessNonOwnedGroups","some","canAccessNonOwned","canAccessOnlyOwnedGroups","hasFullAccessToGroups","canAccessOnlyOwned","groupsPermissionsList","groupsPermissions","own","modelGroupCreatedBy","createdBy","identity","id","push","groups","Array","isArray","locale","permissions","p","filter","Boolean","canAccessModel","getModelsAccessControlList","ensureCanAccessModel","modelName","model","canAccessNonOwnedModels","canAccessOnlyOwnedModels","hasFullAccessToModels","i","length","modelsPermissionsList","relatedModelPermissions","_src","getGroup","fullAccess","models","modelCreatedBy","modelId","modelAuthorizationDisabled","canAccessEntry","getEntriesAccessControlList","pw","hasPw","ensureCanAccessEntry","entry","entryId","canAccessNonOwnedEntries","canAccessOnlyOwnedEntries","hasFullAccessToEntries","groupPermissions","relatedModelsPermissions","entriesPermissionsList","relatedEntriesPermissions","groupCreatedBy","entryCreatedBy","authorization","exports"],"sources":["AccessControl.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport type { SecurityIdentity } from \"@webiny/api-security/types\";\nimport type {\n CmsEntry,\n CmsEntryPermission,\n CmsGroup,\n CmsGroupPermission,\n CmsModel,\n CmsModelPermission\n} from \"~/types\";\n\nexport interface AccessControlParams {\n getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;\n getGroupsPermissions: () => CmsGroupPermission[] | Promise<CmsGroupPermission[]>;\n getModelsPermissions: () => CmsModelPermission[] | Promise<CmsModelPermission[]>;\n getEntriesPermissions: () => CmsEntryPermission[] | Promise<CmsEntryPermission[]>;\n listAllGroups: () => Promise<CmsGroup[]>;\n}\n\ninterface GetGroupsAccessControlListParams {\n group?: CmsGroup;\n}\n\ninterface CanAccessGroupParams extends GetGroupsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetModelsAccessControlListParams {\n model?: CmsModel;\n}\n\ninterface CanAccessModelParams extends GetModelsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetEntriesAccessControlListParams {\n model: Pick<CmsModel, \"modelId\" | \"createdBy\" | \"group\" | \"locale\" | \"authorization\">;\n entry?: Pick<CmsEntry, \"entryId\" | \"createdBy\">;\n}\n\nexport interface CanAccessEntryParams extends GetEntriesAccessControlListParams {\n rwd?: string;\n pw?: string;\n}\n\ninterface AccessControlEntry {\n rwd: string;\n canAccessNonOwned: boolean;\n canAccessOnlyOwned: boolean;\n}\n\ntype AccessControlList = AccessControlEntry[];\n\ninterface EntriesAccessControlEntry extends AccessControlEntry {\n pw?: string;\n}\n\ntype EntriesAccessControlList = EntriesAccessControlEntry[];\n\ninterface IModelAuthorizationDisabledParams {\n model: Pick<CmsModel, \"authorization\">;\n}\n\nexport class AccessControl {\n getIdentity: AccessControlParams[\"getIdentity\"];\n getGroupsPermissions: AccessControlParams[\"getGroupsPermissions\"];\n getModelsPermissions: AccessControlParams[\"getModelsPermissions\"];\n getEntriesPermissions: AccessControlParams[\"getEntriesPermissions\"];\n listAllGroupsCallback: AccessControlParams[\"listAllGroups\"];\n\n private fullAccessPermissions: string[];\n private allGroups: null | CmsGroup[] | Promise<CmsGroup[]>;\n\n constructor({\n getIdentity,\n getGroupsPermissions,\n getModelsPermissions,\n getEntriesPermissions,\n listAllGroups\n }: AccessControlParams) {\n this.getIdentity = getIdentity;\n this.getGroupsPermissions = getGroupsPermissions;\n this.getModelsPermissions = getModelsPermissions;\n this.getEntriesPermissions = getEntriesPermissions;\n this.fullAccessPermissions = [\"*\", \"cms.*\"];\n this.listAllGroupsCallback = listAllGroups;\n this.allGroups = null;\n }\n\n /**\n * Groups-related methods below. 👇\n * - canAccessGroup\n * - ensureCanAccessGroup\n * - canAccessNonOwnedGroups\n * - canAccessOnlyOwnedGroups\n * - getGroupsAccessControlList\n * - hasFullAccessToGroups\n */\n\n async canAccessGroup(params: CanAccessGroupParams = {}) {\n const acl = await this.getGroupsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd?.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n async ensureCanAccessGroup(params: CanAccessGroupParams = {}) {\n const canAccess = await this.canAccessGroup(params);\n if (canAccess) {\n return;\n }\n\n if (\"group\" in params) {\n let groupName = \"(could not determine name)\";\n if (params.group?.name) {\n groupName = `\"${params.group.name}\"`;\n }\n\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content model group ${groupName}.`\n }\n });\n }\n\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content model groups.`\n }\n });\n }\n\n async canAccessNonOwnedGroups(params: GetGroupsAccessControlListParams) {\n const acl = await this.getGroupsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedGroups(params: GetGroupsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedGroups(params);\n return !canAccessNonOwned;\n }\n\n async getGroupsAccessControlList(\n params: GetGroupsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToGroups()) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (const groupsPermissions of groupsPermissionsList) {\n if (groupsPermissions.own) {\n if (\"group\" in params) {\n const modelGroupCreatedBy = params.group?.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n }\n\n if (groupsPermissions.groups) {\n if (\"group\" in params) {\n const { group } = params;\n if (!group) {\n continue;\n }\n\n const { groups } = groupsPermissions;\n if (!Array.isArray(groups[group.locale])) {\n continue;\n }\n\n if (!groups[group.locale].includes(group.id)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: groupsPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToGroups() {\n const permissions = await this.getGroupsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Models-related methods below. 👇\n * - canAccessModel\n * - ensureCanAccessModel\n * - canAccessNonOwnedModels\n * - canAccessOnlyOwnedModels\n * - getModelsAccessControlList\n * - hasFullAccessToModels\n */\n\n async canAccessModel(params: CanAccessModelParams) {\n const acl = await this.getModelsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n async ensureCanAccessModel(params: CanAccessModelParams = {}) {\n const canAccess = await this.canAccessModel(params);\n if (canAccess) {\n return;\n }\n\n if (\"model\" in params) {\n let modelName = \"(could not determine name)\";\n if (params.model?.name) {\n modelName = `\"${params.model.name}\"`;\n }\n\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content model ${modelName}.`\n }\n });\n }\n\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content models.`\n }\n });\n }\n\n async canAccessNonOwnedModels(params: GetModelsAccessControlListParams) {\n const acl = await this.getModelsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedModels(params: GetModelsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedModels(params);\n return !canAccessNonOwned;\n }\n\n async getModelsAccessControlList(\n params: GetModelsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToModels(params)) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupsPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupsPermissions._src\n );\n\n if (!relatedModelPermissions) {\n continue;\n }\n\n if (groupsPermissions.own) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n const group = await this.getGroup(model.group.id);\n if (!group) {\n continue;\n }\n\n const modelGroupCreatedBy = group.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (groupsPermissions.groups) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n if (!Array.isArray(groupsPermissions.groups[model.locale])) {\n continue;\n }\n\n if (!groupsPermissions.groups[model.locale].includes(model.group.id)) {\n continue;\n }\n }\n }\n\n const fullAccess =\n !relatedModelPermissions.rwd &&\n !relatedModelPermissions.own &&\n !relatedModelPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n\n continue;\n }\n\n if (relatedModelPermissions.own) {\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n const modelCreatedBy = params.model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (relatedModelPermissions.models) {\n const { models } = relatedModelPermissions;\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n if (!Array.isArray(models[params.model.locale])) {\n continue;\n }\n\n if (!models[params.model.locale].includes(params.model.modelId)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: relatedModelPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToModels(params: GetModelsAccessControlListParams) {\n const { model } = params;\n if (model) {\n if (this.modelAuthorizationDisabled({ model })) {\n return true;\n }\n }\n\n const permissions = await this.getModelsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Entries-related methods below. 👇\n * - canAccessEntry\n * - ensureCanAccessEntry\n * - canAccessNonOwnedEntries\n * - canAccessOnlyOwnedEntries\n * - getEntriesAccessControlList\n * - hasFullAccessToEntries\n */\n\n async canAccessEntry(params: CanAccessEntryParams) {\n const acl = await this.getEntriesAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n const { pw } = params;\n if (pw) {\n const hasPw = acl.find(ace => ace.pw?.includes(pw));\n if (!hasPw) {\n return false;\n }\n }\n\n return true;\n }\n\n async ensureCanAccessEntry(params: CanAccessEntryParams) {\n const canAccess = await this.canAccessEntry(params);\n if (!canAccess) {\n if (params.entry) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access entry \"${params.entry.entryId}\".`\n }\n });\n }\n\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${params.model.modelId}\" entries.`\n }\n });\n }\n }\n\n async canAccessNonOwnedEntries(params: GetEntriesAccessControlListParams) {\n const acl = await this.getEntriesAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedEntries(params: GetEntriesAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedEntries(params);\n return !canAccessNonOwned;\n }\n\n async getEntriesAccessControlList(\n params: GetEntriesAccessControlListParams\n ): Promise<EntriesAccessControlList> {\n if (await this.hasFullAccessToEntries(params)) {\n return [{ rwd: \"rwd\", pw: \"pu\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const { model } = params;\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: EntriesAccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelsPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedModelsPermissions) {\n continue;\n }\n\n const entriesPermissionsList = await this.getEntriesPermissions();\n const relatedEntriesPermissions = entriesPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedEntriesPermissions) {\n continue;\n }\n\n if (groupPermissions.own) {\n const group = await this.getGroup(model.group.id);\n if (!group) {\n continue;\n }\n\n const groupCreatedBy = group.createdBy;\n if (!groupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (groupCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n if (groupPermissions.groups) {\n const { groups } = groupPermissions;\n\n if (!Array.isArray(groups[model.locale])) {\n continue;\n }\n\n if (!groups[model.locale].includes(model.group.id)) {\n continue;\n }\n }\n\n if (relatedModelsPermissions.own) {\n const modelCreatedBy = model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n if (relatedModelsPermissions.models) {\n if (!Array.isArray(relatedModelsPermissions.models[model.locale])) {\n continue;\n }\n\n if (!relatedModelsPermissions.models[model.locale].includes(model.modelId)) {\n continue;\n }\n }\n\n const fullAccess =\n !relatedEntriesPermissions.rwd &&\n !relatedEntriesPermissions.own &&\n !relatedEntriesPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: \"pu\"\n });\n\n continue;\n }\n\n if (relatedEntriesPermissions.own) {\n if (\"entry\" in params) {\n const entryCreatedBy = params.entry?.createdBy;\n if (!entryCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (entryCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToEntries(params: GetEntriesAccessControlListParams) {\n if (this.modelAuthorizationDisabled(params)) {\n return true;\n }\n\n const permissions = await this.getEntriesPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n private modelAuthorizationDisabled(params: IModelAuthorizationDisabledParams) {\n if (\"authorization\" in params.model) {\n const { authorization } = params.model;\n if (typeof authorization === \"boolean\") {\n return authorization === false;\n }\n\n return authorization?.permissions === false;\n }\n\n return false;\n }\n\n async listAllGroups(): Promise<CmsGroup[]> {\n if (this.allGroups === null) {\n this.allGroups = this.listAllGroupsCallback();\n }\n\n return this.allGroups;\n }\n\n async getGroup(id: string): Promise<CmsGroup | undefined> {\n const groups = await this.listAllGroups();\n return groups.find(group => group.id === id);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# How Access Control Works
|
|
2
|
+
|
|
3
|
+
With Headless CMS, checking base permissions (access control) is a bit more interesting because the three types of permissions objects are related to each other. The three types of permissions are:
|
|
4
|
+
|
|
5
|
+
1. `cms.contentModelGroup`
|
|
6
|
+
2. `cms.contentModel`
|
|
7
|
+
3. `cms.contentEntry`
|
|
8
|
+
|
|
9
|
+
So, for example, when checking if a user can create content entries, it's not enough to check if the user has the `cms.contentEntry` permission. We also need to check if the user has the `cms.contentModel` permission for the content model the entry belongs to, and if the user has the `cms.contentModelGroup` permission for the content model group the content model belongs to.
|
|
10
|
+
|
|
11
|
+
All of the above is handled by the `AccessControl` class, which provides a set of methods to check if a user has the necessary permissions to perform a specific action. The main methods that are used in CRUD operations-related code are:
|
|
12
|
+
|
|
13
|
+
1. `canAccessGroup` (`ensureCanAccessGroup`): checks if a user has the necessary permissions to access a content model group.
|
|
14
|
+
2. `canAccessModel` (`ensureCanAccessModel`): checks if a user has the necessary permissions to access a content model (takes into consideration the content model group permissions).
|
|
15
|
+
3. `canAccessEntry` (`ensureCanAccessEntry`): checks if a user has the necessary permissions to access a content entry (takes into consideration the content model and content model group permissions).
|
|
16
|
+
|
|
17
|
+
Note that all of these methods can accept an exact entity instance if needed, but it's not required. Both has its own use cases.
|
|
18
|
+
|
|
19
|
+
For example, when checking if a user can access (read) a content entry, you can pass the entry instance to the `canAccessEntry` method, and it will check if the user has the necessary permissions to access that specific entry. On the other hand, if the entry instance was not passed, the method would check if the user has the necessary permissions to access (read) entries of the given content model.
|
|
20
|
+
|
|
21
|
+
Note that, whenever possible, the entry should be passed to the method, as it's more secure and provides more accurate results. For example, it is possible to receive a `true` response when checking if a user can access a specific content model, but still receive `false` when the model was not passed (when checking if user can access / read models in general).
|
|
22
|
+
|
|
23
|
+
## Folder Level Permissions
|
|
24
|
+
|
|
25
|
+
With Folder Level Permissions, a user can be part of a team, that may have multiple roles that provide different Headless CMS-related permissions (more information [here](https://www.webiny.com/docs/enterprise/aacl/teams#overview)).
|
|
26
|
+
|
|
27
|
+
The Access Control class is aware of this and ensures that only permissions objects from a single role are taken into consideration when checking if a user has the necessary permissions to perform a specific action. If permission objects from a single role do not provide the necessary permissions, the next role is checked, and so on.
|
|
28
|
+
|
|
29
|
+
In order to achieve this, we're using the `_src` property that's assigned to each permission object. This property contains the role ID, and is used to filter out permissions objects that belong to a different role.
|
|
30
|
+
|
|
31
|
+
## Interesting Permissions-related Logic
|
|
32
|
+
|
|
33
|
+
### Only groups created by the user
|
|
34
|
+
|
|
35
|
+
When choosing "Only groups created by the user" access scope via the `cms.contentModelGroup` permission, the user that possesses this permission can not only fully (r/w/d) access content models that belong to the content model groups that the user has created, but also content entries that belong to those content models.
|
|
36
|
+
|
|
37
|
+
<img src="./groups-own.png">
|
|
38
|
+
|
|
39
|
+
Note that only the entry publishing actions-related permissions are not automatically set here. They need to be defined when defining the role explicitly.
|
|
40
|
+
|
|
41
|
+
### Only models created by the user
|
|
42
|
+
|
|
43
|
+
When choosing "Only models created by the user" access scope via the `cms.contentModel` permission, the user that possesses this permission can not only fully (r/w/d) access content models that the user has created, but also content entries that belong to those content models.
|
|
44
|
+
|
|
45
|
+
<img src="./models-own.png">
|
|
46
|
+
|
|
47
|
+
Note that only the entry publishing actions-related permissions are not automatically set here. They need to be defined when defining the role explicitly.
|
|
Binary file
|
|
Binary file
|