directus 9.23.1 → 9.23.4
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/dist/app.js +25 -21
- package/dist/auth/auth.d.ts +3 -3
- package/dist/auth/auth.js +2 -0
- package/dist/auth/drivers/ldap.d.ts +1 -1
- package/dist/auth/drivers/ldap.js +57 -46
- package/dist/auth/drivers/local.d.ts +1 -1
- package/dist/auth/drivers/local.js +20 -17
- package/dist/auth/drivers/oauth2.d.ts +1 -1
- package/dist/auth/drivers/oauth2.js +44 -35
- package/dist/auth/drivers/openid.d.ts +1 -1
- package/dist/auth/drivers/openid.js +50 -41
- package/dist/auth/drivers/saml.d.ts +1 -1
- package/dist/auth/drivers/saml.js +20 -17
- package/dist/auth.d.ts +1 -1
- package/dist/auth.js +8 -7
- package/dist/cache.d.ts +9 -1
- package/dist/cache.js +66 -18
- package/dist/cli/commands/bootstrap/index.js +7 -6
- package/dist/cli/commands/init/index.js +3 -3
- package/dist/cli/commands/schema/apply.js +14 -15
- package/dist/cli/commands/schema/snapshot.js +2 -2
- package/dist/cli/utils/create-db-connection.d.ts +1 -1
- package/dist/cli/utils/create-db-connection.js +3 -2
- package/dist/cli/utils/create-env/index.d.ts +2 -2
- package/dist/cli/utils/create-env/index.js +1 -1
- package/dist/cli/utils/drivers.d.ts +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.js +7 -7
- package/dist/controllers/activity.js +10 -11
- package/dist/controllers/assets.js +31 -25
- package/dist/controllers/auth.js +40 -26
- package/dist/controllers/collections.js +10 -10
- package/dist/controllers/dashboards.js +14 -11
- package/dist/controllers/extensions.js +3 -3
- package/dist/controllers/fields.js +20 -20
- package/dist/controllers/files.js +26 -20
- package/dist/controllers/flows.js +16 -13
- package/dist/controllers/folders.js +14 -11
- package/dist/controllers/graphql.js +6 -8
- package/dist/controllers/items.js +22 -19
- package/dist/controllers/not-found.d.ts +1 -1
- package/dist/controllers/not-found.js +1 -2
- package/dist/controllers/notifications.js +14 -11
- package/dist/controllers/operations.js +14 -11
- package/dist/controllers/panels.js +14 -11
- package/dist/controllers/permissions.js +14 -11
- package/dist/controllers/presets.js +14 -11
- package/dist/controllers/relations.js +10 -10
- package/dist/controllers/revisions.js +3 -3
- package/dist/controllers/roles.js +14 -11
- package/dist/controllers/schema.js +5 -5
- package/dist/controllers/server.js +7 -7
- package/dist/controllers/settings.js +2 -2
- package/dist/controllers/shares.js +21 -18
- package/dist/controllers/users.js +32 -36
- package/dist/controllers/utils.js +10 -15
- package/dist/controllers/webhooks.js +14 -11
- package/dist/database/helpers/fn/dialects/mssql.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/mssql.js +10 -11
- package/dist/database/helpers/fn/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/mysql.js +2 -3
- package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/oracle.js +10 -11
- package/dist/database/helpers/fn/dialects/postgres.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/postgres.js +10 -11
- package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/sqlite.js +10 -11
- package/dist/database/helpers/fn/types.d.ts +5 -6
- package/dist/database/helpers/fn/types.js +4 -5
- package/dist/database/helpers/geometry/dialects/mssql.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/geometry/dialects/oracle.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/postgres.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
- package/dist/database/helpers/geometry/dialects/redshift.d.ts +2 -2
- package/dist/database/helpers/geometry/dialects/sqlite.d.ts +1 -1
- package/dist/database/helpers/geometry/types.d.ts +2 -2
- package/dist/database/helpers/geometry/types.js +1 -2
- package/dist/database/helpers/index.d.ts +5 -5
- package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mssql.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mysql.js +1 -2
- package/dist/database/helpers/schema/dialects/oracle.d.ts +2 -2
- package/dist/database/helpers/schema/dialects/oracle.js +4 -6
- package/dist/database/helpers/schema/types.d.ts +4 -4
- package/dist/database/helpers/types.d.ts +1 -1
- package/dist/database/helpers/types.js +1 -0
- package/dist/database/index.d.ts +1 -1
- package/dist/database/index.js +13 -13
- package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +1 -1
- package/dist/database/migrations/20201029A-remove-system-relations.d.ts +1 -1
- package/dist/database/migrations/20201029B-remove-system-collections.d.ts +1 -1
- package/dist/database/migrations/20201029C-remove-system-fields.d.ts +1 -1
- package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +1 -1
- package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +1 -1
- package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +1 -1
- package/dist/database/migrations/20210225A-add-relations-sort-field.js +1 -2
- package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +1 -1
- package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +1 -1
- package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +1 -1
- package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +1 -1
- package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +1 -1
- package/dist/database/migrations/20210422A-remove-files-interface.d.ts +1 -1
- package/dist/database/migrations/20210506A-rename-interfaces.d.ts +1 -1
- package/dist/database/migrations/20210510A-restructure-relations.d.ts +1 -1
- package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +1 -1
- package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +1 -1
- package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +1 -1
- package/dist/database/migrations/20210519A-add-system-fk-triggers.js +2 -2
- package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +1 -1
- package/dist/database/migrations/20210525A-add-insights.d.ts +1 -1
- package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +1 -1
- package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +1 -1
- package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +1 -1
- package/dist/database/migrations/20210721A-add-default-folder.d.ts +1 -1
- package/dist/database/migrations/20210802A-replace-groups.d.ts +1 -1
- package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +1 -1
- package/dist/database/migrations/20210805A-update-groups.d.ts +1 -1
- package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +1 -1
- package/dist/database/migrations/20210805B-change-image-metadata-structure.js +15 -15
- package/dist/database/migrations/20210811A-add-geometry-config.d.ts +1 -1
- package/dist/database/migrations/20210831A-remove-limit-column.d.ts +1 -1
- package/dist/database/migrations/20210903A-add-auth-provider.d.ts +1 -1
- package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +1 -1
- package/dist/database/migrations/20210910A-move-module-setup.d.ts +1 -1
- package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +1 -1
- package/dist/database/migrations/20210924A-add-collection-organization.d.ts +1 -1
- package/dist/database/migrations/20210927A-replace-fields-group.d.ts +1 -1
- package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +1 -1
- package/dist/database/migrations/20210929A-rename-login-action.d.ts +1 -1
- package/dist/database/migrations/20211007A-update-presets.d.ts +1 -1
- package/dist/database/migrations/20211007A-update-presets.js +7 -9
- package/dist/database/migrations/20211009A-add-auth-data.d.ts +1 -1
- package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +1 -1
- package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +1 -1
- package/dist/database/migrations/20211103B-update-special-geometry.d.ts +1 -1
- package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +1 -1
- package/dist/database/migrations/20211118A-add-notifications.d.ts +1 -1
- package/dist/database/migrations/20211211A-add-shares.d.ts +1 -1
- package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +1 -1
- package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +1 -1
- package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +1 -1
- package/dist/database/migrations/20220314A-add-translation-strings.d.ts +1 -1
- package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +1 -1
- package/dist/database/migrations/20220323A-add-field-validation.d.ts +1 -1
- package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +1 -1
- package/dist/database/migrations/20220325B-add-default-language.d.ts +1 -1
- package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +1 -1
- package/dist/database/migrations/20220429A-add-flows.d.ts +1 -1
- package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +1 -1
- package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +1 -1
- package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +1 -1
- package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +1 -1
- package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +1 -1
- package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +1 -1
- package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +1 -1
- package/dist/database/migrations/run.d.ts +1 -1
- package/dist/database/migrations/run.js +1 -1
- package/dist/database/run-ast.d.ts +3 -3
- package/dist/database/run-ast.js +21 -30
- package/dist/database/seeds/run.d.ts +1 -1
- package/dist/database/seeds/run.js +1 -2
- package/dist/database/system-data/app-access-permissions/index.d.ts +1 -1
- package/dist/database/system-data/collections/index.d.ts +1 -1
- package/dist/database/system-data/collections/index.js +2 -2
- package/dist/database/system-data/fields/collections.yaml +2 -0
- package/dist/database/system-data/fields/index.d.ts +1 -1
- package/dist/database/system-data/fields/index.js +3 -4
- package/dist/database/system-data/fields/settings.yaml +4 -0
- package/dist/database/system-data/relations/index.d.ts +1 -1
- package/dist/emitter.d.ts +1 -1
- package/dist/emitter.js +3 -0
- package/dist/env.js +11 -3
- package/dist/exceptions/database/dialects/mssql.d.ts +1 -1
- package/dist/exceptions/database/dialects/mssql.js +5 -6
- package/dist/exceptions/database/dialects/mysql.d.ts +1 -1
- package/dist/exceptions/database/dialects/mysql.js +19 -25
- package/dist/exceptions/database/dialects/oracle.d.ts +1 -1
- package/dist/exceptions/database/dialects/postgres.d.ts +1 -1
- package/dist/exceptions/database/dialects/sqlite.d.ts +1 -1
- package/dist/exceptions/database/translate.d.ts +1 -1
- package/dist/exceptions/database/value-out-of-range.js +1 -1
- package/dist/exceptions/range-not-satisfiable.js +2 -3
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +43 -33
- package/dist/flows.js +65 -46
- package/dist/logger.d.ts +2 -1
- package/dist/logger.js +35 -19
- package/dist/logger.test.d.ts +1 -0
- package/dist/mailer.js +16 -16
- package/dist/messenger.js +9 -7
- package/dist/middleware/authenticate.d.ts +1 -1
- package/dist/middleware/authenticate.js +13 -6
- package/dist/middleware/cache.d.ts +1 -1
- package/dist/middleware/cache.js +16 -16
- package/dist/middleware/check-ip.d.ts +1 -1
- package/dist/middleware/check-ip.js +1 -1
- package/dist/middleware/collection-exists.d.ts +1 -1
- package/dist/middleware/collection-exists.js +5 -5
- package/dist/middleware/cors.d.ts +1 -1
- package/dist/middleware/cors.js +7 -7
- package/dist/middleware/error-handler.d.ts +1 -1
- package/dist/middleware/error-handler.js +11 -12
- package/dist/middleware/extract-token.d.ts +1 -1
- package/dist/middleware/extract-token.js +2 -2
- package/dist/middleware/get-permissions.d.ts +1 -1
- package/dist/middleware/graphql.d.ts +1 -1
- package/dist/middleware/graphql.js +15 -9
- package/dist/middleware/rate-limiter-global.d.ts +5 -0
- package/dist/middleware/rate-limiter-global.js +48 -0
- package/dist/middleware/{rate-limiter.d.ts → rate-limiter-ip.d.ts} +2 -2
- package/dist/middleware/{rate-limiter.js → rate-limiter-ip.js} +5 -5
- package/dist/middleware/respond.d.ts +1 -1
- package/dist/middleware/respond.js +18 -19
- package/dist/middleware/sanitize-query.d.ts +1 -1
- package/dist/middleware/sanitize-query.js +1 -1
- package/dist/middleware/schema.d.ts +1 -1
- package/dist/middleware/use-collection.d.ts +1 -1
- package/dist/operations/condition/index.d.ts +1 -1
- package/dist/operations/exec/index.js +15 -4
- package/dist/operations/item-create/index.js +1 -2
- package/dist/operations/item-delete/index.d.ts +1 -1
- package/dist/operations/item-read/index.d.ts +1 -1
- package/dist/operations/item-update/index.d.ts +1 -1
- package/dist/operations/item-update/index.js +1 -2
- package/dist/operations/notification/index.js +1 -2
- package/dist/operations/request/index.js +19 -19
- package/dist/operations/trigger/index.js +2 -3
- package/dist/rate-limiter.d.ts +1 -1
- package/dist/rate-limiter.js +9 -9
- package/dist/request/validate-ip.js +2 -2
- package/dist/server.js +12 -13
- package/dist/services/activity.d.ts +1 -1
- package/dist/services/activity.js +17 -16
- package/dist/services/assets.d.ts +3 -3
- package/dist/services/assets.js +35 -37
- package/dist/services/authentication.d.ts +2 -2
- package/dist/services/authentication.js +22 -19
- package/dist/services/authorization.d.ts +3 -3
- package/dist/services/authorization.js +27 -31
- package/dist/services/collections.d.ts +5 -5
- package/dist/services/collections.js +54 -50
- package/dist/services/dashboards.d.ts +1 -1
- package/dist/services/fields.d.ts +5 -5
- package/dist/services/fields.js +50 -50
- package/dist/services/files.d.ts +1 -2
- package/dist/services/files.js +33 -27
- package/dist/services/flows.d.ts +2 -2
- package/dist/services/folders.d.ts +1 -1
- package/dist/services/graphql/index.d.ts +4 -4
- package/dist/services/graphql/index.js +259 -252
- package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -2
- package/dist/services/graphql/utils/process-error.d.ts +2 -2
- package/dist/services/graphql/utils/process-error.js +11 -4
- package/dist/services/import-export.d.ts +3 -3
- package/dist/services/import-export.js +30 -27
- package/dist/services/items.d.ts +3 -3
- package/dist/services/items.js +42 -36
- package/dist/services/mail/index.d.ts +4 -4
- package/dist/services/mail/index.js +14 -10
- package/dist/services/meta.d.ts +3 -3
- package/dist/services/meta.js +11 -9
- package/dist/services/notifications.d.ts +3 -3
- package/dist/services/notifications.js +10 -9
- package/dist/services/operations.d.ts +2 -2
- package/dist/services/panels.d.ts +1 -1
- package/dist/services/payload.d.ts +3 -3
- package/dist/services/payload.js +124 -122
- package/dist/services/permissions.d.ts +3 -3
- package/dist/services/permissions.js +11 -11
- package/dist/services/presets.d.ts +1 -1
- package/dist/services/relations.d.ts +6 -6
- package/dist/services/relations.js +45 -43
- package/dist/services/revisions.d.ts +1 -1
- package/dist/services/revisions.js +3 -3
- package/dist/services/roles.d.ts +2 -2
- package/dist/services/roles.js +7 -7
- package/dist/services/schema.d.ts +3 -3
- package/dist/services/schema.js +9 -11
- package/dist/services/server.d.ts +3 -3
- package/dist/services/server.js +88 -32
- package/dist/services/settings.d.ts +1 -1
- package/dist/services/shares.d.ts +1 -1
- package/dist/services/shares.js +14 -15
- package/dist/services/specifications.d.ts +4 -4
- package/dist/services/specifications.js +137 -119
- package/dist/services/tfa.d.ts +2 -2
- package/dist/services/tfa.js +7 -5
- package/dist/services/users.d.ts +2 -6
- package/dist/services/users.js +37 -40
- package/dist/services/utils.d.ts +3 -3
- package/dist/services/utils.js +10 -8
- package/dist/services/webhooks.d.ts +2 -2
- package/dist/services/webhooks.js +2 -1
- package/dist/storage/register-locations.js +1 -1
- package/dist/types/assets.d.ts +1 -1
- package/dist/types/ast.d.ts +1 -1
- package/dist/types/auth.d.ts +2 -2
- package/dist/types/collection.d.ts +2 -2
- package/dist/types/events.d.ts +2 -2
- package/dist/types/graphql.d.ts +2 -2
- package/dist/types/items.d.ts +3 -3
- package/dist/types/services.d.ts +5 -5
- package/dist/types/snapshot.d.ts +4 -4
- package/dist/utils/apply-diff.d.ts +3 -3
- package/dist/utils/apply-diff.js +25 -28
- package/dist/utils/apply-query.d.ts +3 -3
- package/dist/utils/apply-query.js +10 -12
- package/dist/utils/apply-snapshot.d.ts +3 -3
- package/dist/utils/apply-snapshot.js +5 -6
- package/dist/utils/construct-flow-tree.d.ts +1 -1
- package/dist/utils/construct-flow-tree.js +2 -2
- package/dist/utils/dynamic-import.js +1 -1
- package/dist/utils/filter-items.d.ts +1 -1
- package/dist/utils/generate-hash.js +1 -1
- package/dist/utils/get-accountability-for-role.d.ts +2 -2
- package/dist/utils/get-accountability-for-role.js +1 -1
- package/dist/utils/get-ast-from-query.d.ts +3 -3
- package/dist/utils/get-ast-from-query.js +22 -28
- package/dist/utils/get-auth-providers.js +1 -1
- package/dist/utils/get-cache-headers.d.ts +1 -1
- package/dist/utils/get-cache-headers.js +6 -7
- package/dist/utils/get-cache-key.d.ts +1 -1
- package/dist/utils/get-cache-key.js +2 -3
- package/dist/utils/get-collection-from-alias.d.ts +1 -1
- package/dist/utils/get-collection-from-alias.js +1 -0
- package/dist/utils/get-column-path.d.ts +2 -2
- package/dist/utils/get-column-path.js +3 -4
- package/dist/utils/get-column.d.ts +4 -4
- package/dist/utils/get-column.js +4 -5
- package/dist/utils/get-default-value.d.ts +2 -2
- package/dist/utils/get-default-value.js +2 -3
- package/dist/utils/get-graphql-query-and-variables.d.ts +1 -1
- package/dist/utils/get-graphql-query-and-variables.js +1 -2
- package/dist/utils/get-graphql-type.d.ts +2 -2
- package/dist/utils/get-graphql-type.js +1 -1
- package/dist/utils/get-ip-from-req.d.ts +1 -1
- package/dist/utils/get-ip-from-req.js +2 -2
- package/dist/utils/get-local-type.d.ts +1 -1
- package/dist/utils/get-local-type.js +3 -3
- package/dist/utils/get-milliseconds.js +1 -2
- package/dist/utils/get-permissions.d.ts +1 -1
- package/dist/utils/get-permissions.js +12 -12
- package/dist/utils/get-relation-info.d.ts +1 -1
- package/dist/utils/get-relation-info.js +3 -5
- package/dist/utils/get-relation-type.d.ts +1 -1
- package/dist/utils/get-relation-type.js +3 -4
- package/dist/utils/get-schema.d.ts +2 -2
- package/dist/utils/get-schema.js +20 -22
- package/dist/utils/get-snapshot-diff.js +2 -3
- package/dist/utils/get-snapshot.d.ts +3 -3
- package/dist/utils/get-snapshot.js +6 -8
- package/dist/utils/is-directus-jwt.js +1 -1
- package/dist/utils/is-url-allowed.js +5 -2
- package/dist/utils/job-queue.js +2 -0
- package/dist/utils/jwt.d.ts +1 -1
- package/dist/utils/merge-permissions-for-share.d.ts +1 -1
- package/dist/utils/merge-permissions-for-share.js +3 -4
- package/dist/utils/merge-permissions.d.ts +3 -3
- package/dist/utils/reduce-schema.d.ts +1 -1
- package/dist/utils/reduce-schema.js +12 -12
- package/dist/utils/sanitize-query.d.ts +1 -1
- package/dist/utils/sanitize-query.js +27 -27
- package/dist/utils/sanitize-schema.d.ts +2 -2
- package/dist/utils/should-skip-cache.d.ts +7 -0
- package/dist/utils/should-skip-cache.js +21 -0
- package/dist/utils/should-skip-cache.test.d.ts +1 -0
- package/dist/utils/track.js +16 -16
- package/dist/utils/transformations.d.ts +1 -1
- package/dist/utils/transformations.js +2 -4
- package/dist/utils/url.js +7 -2
- package/dist/utils/user-name.d.ts +1 -1
- package/dist/utils/validate-diff.js +7 -8
- package/dist/utils/validate-keys.d.ts +2 -2
- package/dist/utils/validate-keys.js +1 -1
- package/dist/utils/validate-query.d.ts +1 -1
- package/dist/utils/validate-query.js +3 -3
- package/dist/utils/validate-storage.js +8 -8
- package/dist/webhooks.js +3 -3
- package/package.json +36 -37
- package/dist/utils/with-timeout.d.ts +0 -1
- package/dist/utils/with-timeout.js +0 -16
|
@@ -12,11 +12,12 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
|
|
|
12
12
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
13
13
|
const services_1 = require("../services");
|
|
14
14
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
15
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
15
16
|
const router = express_1.default.Router();
|
|
16
17
|
router.use((0, use_collection_1.default)('directus_flows'));
|
|
17
18
|
const webhookFlowHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
18
19
|
const flowManager = (0, flows_1.getFlowManager)();
|
|
19
|
-
const result = await flowManager.runWebhookFlow(`${req.method}-${req.params
|
|
20
|
+
const result = await flowManager.runWebhookFlow(`${req.method}-${req.params['pk']}`, {
|
|
20
21
|
path: req.path,
|
|
21
22
|
query: req.query,
|
|
22
23
|
body: req.body,
|
|
@@ -26,7 +27,7 @@ const webhookFlowHandler = (0, async_handler_1.default)(async (req, res, next) =
|
|
|
26
27
|
accountability: req.accountability,
|
|
27
28
|
schema: req.schema,
|
|
28
29
|
});
|
|
29
|
-
res.locals
|
|
30
|
+
res.locals['payload'] = result;
|
|
30
31
|
return next();
|
|
31
32
|
});
|
|
32
33
|
router.get(`/trigger/:pk(${constants_1.UUID_REGEX})`, webhookFlowHandler, respond_1.respond);
|
|
@@ -48,11 +49,11 @@ router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
48
49
|
try {
|
|
49
50
|
if (Array.isArray(req.body)) {
|
|
50
51
|
const items = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
51
|
-
res.locals
|
|
52
|
+
res.locals['payload'] = { data: items };
|
|
52
53
|
}
|
|
53
54
|
else {
|
|
54
55
|
const item = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
55
|
-
res.locals
|
|
56
|
+
res.locals['payload'] = { data: item };
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
catch (error) {
|
|
@@ -74,7 +75,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
74
75
|
});
|
|
75
76
|
const records = await service.readByQuery(req.sanitizedQuery);
|
|
76
77
|
const meta = await metaService.getMetaForQuery(req.collection, req.sanitizedQuery);
|
|
77
|
-
res.locals
|
|
78
|
+
res.locals['payload'] = { data: records || null, meta };
|
|
78
79
|
return next();
|
|
79
80
|
});
|
|
80
81
|
router.get('/', (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
@@ -84,8 +85,8 @@ router.get('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
84
85
|
accountability: req.accountability,
|
|
85
86
|
schema: req.schema,
|
|
86
87
|
});
|
|
87
|
-
const record = await service.readOne(req.params
|
|
88
|
-
res.locals
|
|
88
|
+
const record = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
89
|
+
res.locals['payload'] = { data: record || null };
|
|
89
90
|
return next();
|
|
90
91
|
}), respond_1.respond);
|
|
91
92
|
router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -101,11 +102,12 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
|
|
|
101
102
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
102
103
|
}
|
|
103
104
|
else {
|
|
104
|
-
|
|
105
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
106
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
105
107
|
}
|
|
106
108
|
try {
|
|
107
109
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
108
|
-
res.locals
|
|
110
|
+
res.locals['payload'] = { data: result };
|
|
109
111
|
}
|
|
110
112
|
catch (error) {
|
|
111
113
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -120,10 +122,10 @@ router.patch('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
120
122
|
accountability: req.accountability,
|
|
121
123
|
schema: req.schema,
|
|
122
124
|
});
|
|
123
|
-
const primaryKey = await service.updateOne(req.params
|
|
125
|
+
const primaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
124
126
|
try {
|
|
125
127
|
const item = await service.readOne(primaryKey, req.sanitizedQuery);
|
|
126
|
-
res.locals
|
|
128
|
+
res.locals['payload'] = { data: item || null };
|
|
127
129
|
}
|
|
128
130
|
catch (error) {
|
|
129
131
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -145,7 +147,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
145
147
|
await service.deleteMany(req.body.keys);
|
|
146
148
|
}
|
|
147
149
|
else {
|
|
148
|
-
|
|
150
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
151
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
149
152
|
}
|
|
150
153
|
return next();
|
|
151
154
|
}), respond_1.respond);
|
|
@@ -154,7 +157,7 @@ router.delete('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
154
157
|
accountability: req.accountability,
|
|
155
158
|
schema: req.schema,
|
|
156
159
|
});
|
|
157
|
-
await service.deleteOne(req.params
|
|
160
|
+
await service.deleteOne(req.params['pk']);
|
|
158
161
|
return next();
|
|
159
162
|
}), respond_1.respond);
|
|
160
163
|
exports.default = router;
|
|
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
|
|
|
10
10
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
11
11
|
const services_1 = require("../services");
|
|
12
12
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
13
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
13
14
|
const router = express_1.default.Router();
|
|
14
15
|
router.use((0, use_collection_1.default)('directus_folders'));
|
|
15
16
|
router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -29,11 +30,11 @@ router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
29
30
|
try {
|
|
30
31
|
if (Array.isArray(req.body)) {
|
|
31
32
|
const records = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
32
|
-
res.locals
|
|
33
|
+
res.locals['payload'] = { data: records };
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
36
|
const record = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
36
|
-
res.locals
|
|
37
|
+
res.locals['payload'] = { data: record };
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
catch (error) {
|
|
@@ -64,7 +65,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
64
65
|
result = await service.readByQuery(req.sanitizedQuery);
|
|
65
66
|
}
|
|
66
67
|
const meta = await metaService.getMetaForQuery('directus_folders', req.sanitizedQuery);
|
|
67
|
-
res.locals
|
|
68
|
+
res.locals['payload'] = { data: result, meta };
|
|
68
69
|
return next();
|
|
69
70
|
});
|
|
70
71
|
router.get('/', (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
@@ -74,8 +75,8 @@ router.get('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
74
75
|
accountability: req.accountability,
|
|
75
76
|
schema: req.schema,
|
|
76
77
|
});
|
|
77
|
-
const record = await service.readOne(req.params
|
|
78
|
-
res.locals
|
|
78
|
+
const record = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
79
|
+
res.locals['payload'] = { data: record || null };
|
|
79
80
|
return next();
|
|
80
81
|
}), respond_1.respond);
|
|
81
82
|
router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -91,11 +92,12 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
|
|
|
91
92
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
92
93
|
}
|
|
93
94
|
else {
|
|
94
|
-
|
|
95
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
96
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
95
97
|
}
|
|
96
98
|
try {
|
|
97
99
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
98
|
-
res.locals
|
|
100
|
+
res.locals['payload'] = { data: result || null };
|
|
99
101
|
}
|
|
100
102
|
catch (error) {
|
|
101
103
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -110,10 +112,10 @@ router.patch('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
110
112
|
accountability: req.accountability,
|
|
111
113
|
schema: req.schema,
|
|
112
114
|
});
|
|
113
|
-
const primaryKey = await service.updateOne(req.params
|
|
115
|
+
const primaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
114
116
|
try {
|
|
115
117
|
const record = await service.readOne(primaryKey, req.sanitizedQuery);
|
|
116
|
-
res.locals
|
|
118
|
+
res.locals['payload'] = { data: record || null };
|
|
117
119
|
}
|
|
118
120
|
catch (error) {
|
|
119
121
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -135,7 +137,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
|
|
|
135
137
|
await service.deleteMany(req.body.keys);
|
|
136
138
|
}
|
|
137
139
|
else {
|
|
138
|
-
|
|
140
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
141
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
139
142
|
}
|
|
140
143
|
return next();
|
|
141
144
|
}), respond_1.respond);
|
|
@@ -144,7 +147,7 @@ router.delete('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
144
147
|
accountability: req.accountability,
|
|
145
148
|
schema: req.schema,
|
|
146
149
|
});
|
|
147
|
-
await service.deleteOne(req.params
|
|
150
|
+
await service.deleteOne(req.params['pk']);
|
|
148
151
|
return next();
|
|
149
152
|
}), respond_1.respond);
|
|
150
153
|
exports.default = router;
|
|
@@ -10,28 +10,26 @@ const services_1 = require("../services");
|
|
|
10
10
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
11
11
|
const router = (0, express_1.Router)();
|
|
12
12
|
router.use('/system', graphql_1.parseGraphQL, (0, async_handler_1.default)(async (req, res, next) => {
|
|
13
|
-
var _a, _b;
|
|
14
13
|
const service = new services_1.GraphQLService({
|
|
15
14
|
accountability: req.accountability,
|
|
16
15
|
schema: req.schema,
|
|
17
16
|
scope: 'system',
|
|
18
17
|
});
|
|
19
|
-
res.locals
|
|
20
|
-
if (
|
|
21
|
-
res.locals
|
|
18
|
+
res.locals['payload'] = await service.execute(res.locals['graphqlParams']);
|
|
19
|
+
if (res.locals['payload']?.errors?.length > 0) {
|
|
20
|
+
res.locals['cache'] = false;
|
|
22
21
|
}
|
|
23
22
|
return next();
|
|
24
23
|
}), respond_1.respond);
|
|
25
24
|
router.use('/', graphql_1.parseGraphQL, (0, async_handler_1.default)(async (req, res, next) => {
|
|
26
|
-
var _a, _b;
|
|
27
25
|
const service = new services_1.GraphQLService({
|
|
28
26
|
accountability: req.accountability,
|
|
29
27
|
schema: req.schema,
|
|
30
28
|
scope: 'items',
|
|
31
29
|
});
|
|
32
|
-
res.locals
|
|
33
|
-
if (
|
|
34
|
-
res.locals
|
|
30
|
+
res.locals['payload'] = await service.execute(res.locals['graphqlParams']);
|
|
31
|
+
if (res.locals['payload']?.errors?.length > 0) {
|
|
32
|
+
res.locals['cache'] = false;
|
|
35
33
|
}
|
|
36
34
|
return next();
|
|
37
35
|
}), respond_1.respond);
|
|
@@ -10,9 +10,10 @@ const respond_1 = require("../middleware/respond");
|
|
|
10
10
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
11
11
|
const services_1 = require("../services");
|
|
12
12
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
13
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
13
14
|
const router = express_1.default.Router();
|
|
14
15
|
router.post('/:collection', collection_exists_1.default, (0, async_handler_1.default)(async (req, res, next) => {
|
|
15
|
-
if (req.params
|
|
16
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
16
17
|
throw new exceptions_1.ForbiddenException();
|
|
17
18
|
if (req.singleton) {
|
|
18
19
|
throw new exceptions_1.RouteNotFoundException(req.path);
|
|
@@ -33,11 +34,11 @@ router.post('/:collection', collection_exists_1.default, (0, async_handler_1.def
|
|
|
33
34
|
try {
|
|
34
35
|
if (Array.isArray(req.body)) {
|
|
35
36
|
const result = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
36
|
-
res.locals
|
|
37
|
+
res.locals['payload'] = { data: result || null };
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
39
40
|
const result = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
40
|
-
res.locals
|
|
41
|
+
res.locals['payload'] = { data: result || null };
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
catch (error) {
|
|
@@ -49,7 +50,7 @@ router.post('/:collection', collection_exists_1.default, (0, async_handler_1.def
|
|
|
49
50
|
return next();
|
|
50
51
|
}), respond_1.respond);
|
|
51
52
|
const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
52
|
-
if (req.params
|
|
53
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
53
54
|
throw new exceptions_1.ForbiddenException();
|
|
54
55
|
const service = new services_1.ItemsService(req.collection, {
|
|
55
56
|
accountability: req.accountability,
|
|
@@ -70,7 +71,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
70
71
|
result = await service.readByQuery(req.sanitizedQuery);
|
|
71
72
|
}
|
|
72
73
|
const meta = await metaService.getMetaForQuery(req.collection, req.sanitizedQuery);
|
|
73
|
-
res.locals
|
|
74
|
+
res.locals['payload'] = {
|
|
74
75
|
meta: meta,
|
|
75
76
|
data: result,
|
|
76
77
|
};
|
|
@@ -79,20 +80,20 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
79
80
|
router.search('/:collection', collection_exists_1.default, (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
80
81
|
router.get('/:collection', collection_exists_1.default, readHandler, respond_1.respond);
|
|
81
82
|
router.get('/:collection/:pk', collection_exists_1.default, (0, async_handler_1.default)(async (req, res, next) => {
|
|
82
|
-
if (req.params
|
|
83
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
83
84
|
throw new exceptions_1.ForbiddenException();
|
|
84
85
|
const service = new services_1.ItemsService(req.collection, {
|
|
85
86
|
accountability: req.accountability,
|
|
86
87
|
schema: req.schema,
|
|
87
88
|
});
|
|
88
|
-
const result = await service.readOne(req.params
|
|
89
|
-
res.locals
|
|
89
|
+
const result = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
90
|
+
res.locals['payload'] = {
|
|
90
91
|
data: result || null,
|
|
91
92
|
};
|
|
92
93
|
return next();
|
|
93
94
|
}), respond_1.respond);
|
|
94
95
|
router.patch('/:collection', collection_exists_1.default, (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
95
|
-
if (req.params
|
|
96
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
96
97
|
throw new exceptions_1.ForbiddenException();
|
|
97
98
|
const service = new services_1.ItemsService(req.collection, {
|
|
98
99
|
accountability: req.accountability,
|
|
@@ -101,7 +102,7 @@ router.patch('/:collection', collection_exists_1.default, (0, validate_batch_1.v
|
|
|
101
102
|
if (req.singleton === true) {
|
|
102
103
|
await service.upsertSingleton(req.body);
|
|
103
104
|
const item = await service.readSingleton(req.sanitizedQuery);
|
|
104
|
-
res.locals
|
|
105
|
+
res.locals['payload'] = { data: item || null };
|
|
105
106
|
return next();
|
|
106
107
|
}
|
|
107
108
|
let keys = [];
|
|
@@ -112,11 +113,12 @@ router.patch('/:collection', collection_exists_1.default, (0, validate_batch_1.v
|
|
|
112
113
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
113
114
|
}
|
|
114
115
|
else {
|
|
115
|
-
|
|
116
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
117
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
116
118
|
}
|
|
117
119
|
try {
|
|
118
120
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
119
|
-
res.locals
|
|
121
|
+
res.locals['payload'] = { data: result };
|
|
120
122
|
}
|
|
121
123
|
catch (error) {
|
|
122
124
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -127,7 +129,7 @@ router.patch('/:collection', collection_exists_1.default, (0, validate_batch_1.v
|
|
|
127
129
|
return next();
|
|
128
130
|
}), respond_1.respond);
|
|
129
131
|
router.patch('/:collection/:pk', collection_exists_1.default, (0, async_handler_1.default)(async (req, res, next) => {
|
|
130
|
-
if (req.params
|
|
132
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
131
133
|
throw new exceptions_1.ForbiddenException();
|
|
132
134
|
if (req.singleton) {
|
|
133
135
|
throw new exceptions_1.RouteNotFoundException(req.path);
|
|
@@ -136,10 +138,10 @@ router.patch('/:collection/:pk', collection_exists_1.default, (0, async_handler_
|
|
|
136
138
|
accountability: req.accountability,
|
|
137
139
|
schema: req.schema,
|
|
138
140
|
});
|
|
139
|
-
const updatedPrimaryKey = await service.updateOne(req.params
|
|
141
|
+
const updatedPrimaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
140
142
|
try {
|
|
141
143
|
const result = await service.readOne(updatedPrimaryKey, req.sanitizedQuery);
|
|
142
|
-
res.locals
|
|
144
|
+
res.locals['payload'] = { data: result || null };
|
|
143
145
|
}
|
|
144
146
|
catch (error) {
|
|
145
147
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -150,7 +152,7 @@ router.patch('/:collection/:pk', collection_exists_1.default, (0, async_handler_
|
|
|
150
152
|
return next();
|
|
151
153
|
}), respond_1.respond);
|
|
152
154
|
router.delete('/:collection', collection_exists_1.default, (0, validate_batch_1.validateBatch)('delete'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
153
|
-
if (req.params
|
|
155
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
154
156
|
throw new exceptions_1.ForbiddenException();
|
|
155
157
|
const service = new services_1.ItemsService(req.collection, {
|
|
156
158
|
accountability: req.accountability,
|
|
@@ -163,18 +165,19 @@ router.delete('/:collection', collection_exists_1.default, (0, validate_batch_1.
|
|
|
163
165
|
await service.deleteMany(req.body.keys);
|
|
164
166
|
}
|
|
165
167
|
else {
|
|
166
|
-
|
|
168
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
169
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
167
170
|
}
|
|
168
171
|
return next();
|
|
169
172
|
}), respond_1.respond);
|
|
170
173
|
router.delete('/:collection/:pk', collection_exists_1.default, (0, async_handler_1.default)(async (req, res, next) => {
|
|
171
|
-
if (req.params
|
|
174
|
+
if (req.params['collection'].startsWith('directus_'))
|
|
172
175
|
throw new exceptions_1.ForbiddenException();
|
|
173
176
|
const service = new services_1.ItemsService(req.collection, {
|
|
174
177
|
accountability: req.accountability,
|
|
175
178
|
schema: req.schema,
|
|
176
179
|
});
|
|
177
|
-
await service.deleteOne(req.params
|
|
180
|
+
await service.deleteOne(req.params['pk']);
|
|
178
181
|
return next();
|
|
179
182
|
}), respond_1.respond);
|
|
180
183
|
exports.default = router;
|
|
@@ -18,12 +18,11 @@ const exceptions_1 = require("../exceptions");
|
|
|
18
18
|
* @param next
|
|
19
19
|
*/
|
|
20
20
|
const notFound = async (req, res, next) => {
|
|
21
|
-
var _a;
|
|
22
21
|
try {
|
|
23
22
|
const hooksResult = await emitter_1.default.emitFilter('request.not_found', false, { request: req, response: res }, {
|
|
24
23
|
database: (0, database_1.default)(),
|
|
25
24
|
schema: req.schema,
|
|
26
|
-
accountability:
|
|
25
|
+
accountability: req.accountability ?? null,
|
|
27
26
|
});
|
|
28
27
|
if (hooksResult) {
|
|
29
28
|
return next();
|
|
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
|
|
|
10
10
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
11
11
|
const services_1 = require("../services");
|
|
12
12
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
13
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
13
14
|
const router = express_1.default.Router();
|
|
14
15
|
router.use((0, use_collection_1.default)('directus_notifications'));
|
|
15
16
|
router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -29,11 +30,11 @@ router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
29
30
|
try {
|
|
30
31
|
if (Array.isArray(req.body)) {
|
|
31
32
|
const records = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
32
|
-
res.locals
|
|
33
|
+
res.locals['payload'] = { data: records };
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
36
|
const record = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
36
|
-
res.locals
|
|
37
|
+
res.locals['payload'] = { data: record };
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
catch (error) {
|
|
@@ -64,7 +65,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
64
65
|
result = await service.readByQuery(req.sanitizedQuery);
|
|
65
66
|
}
|
|
66
67
|
const meta = await metaService.getMetaForQuery('directus_notifications', req.sanitizedQuery);
|
|
67
|
-
res.locals
|
|
68
|
+
res.locals['payload'] = { data: result, meta };
|
|
68
69
|
return next();
|
|
69
70
|
});
|
|
70
71
|
router.get('/', (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
@@ -74,8 +75,8 @@ router.get('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
74
75
|
accountability: req.accountability,
|
|
75
76
|
schema: req.schema,
|
|
76
77
|
});
|
|
77
|
-
const record = await service.readOne(req.params
|
|
78
|
-
res.locals
|
|
78
|
+
const record = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
79
|
+
res.locals['payload'] = { data: record || null };
|
|
79
80
|
return next();
|
|
80
81
|
}), respond_1.respond);
|
|
81
82
|
router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -91,11 +92,12 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
|
|
|
91
92
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
92
93
|
}
|
|
93
94
|
else {
|
|
94
|
-
|
|
95
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
96
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
95
97
|
}
|
|
96
98
|
try {
|
|
97
99
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
98
|
-
res.locals
|
|
100
|
+
res.locals['payload'] = { data: result };
|
|
99
101
|
}
|
|
100
102
|
catch (error) {
|
|
101
103
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -110,10 +112,10 @@ router.patch('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
110
112
|
accountability: req.accountability,
|
|
111
113
|
schema: req.schema,
|
|
112
114
|
});
|
|
113
|
-
const primaryKey = await service.updateOne(req.params
|
|
115
|
+
const primaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
114
116
|
try {
|
|
115
117
|
const record = await service.readOne(primaryKey, req.sanitizedQuery);
|
|
116
|
-
res.locals
|
|
118
|
+
res.locals['payload'] = { data: record };
|
|
117
119
|
}
|
|
118
120
|
catch (error) {
|
|
119
121
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -135,7 +137,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
|
|
|
135
137
|
await service.deleteMany(req.body.keys);
|
|
136
138
|
}
|
|
137
139
|
else {
|
|
138
|
-
|
|
140
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
141
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
139
142
|
}
|
|
140
143
|
return next();
|
|
141
144
|
}), respond_1.respond);
|
|
@@ -144,7 +147,7 @@ router.delete('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
144
147
|
accountability: req.accountability,
|
|
145
148
|
schema: req.schema,
|
|
146
149
|
});
|
|
147
|
-
await service.deleteOne(req.params
|
|
150
|
+
await service.deleteOne(req.params['pk']);
|
|
148
151
|
return next();
|
|
149
152
|
}), respond_1.respond);
|
|
150
153
|
exports.default = router;
|
|
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
|
|
|
10
10
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
11
11
|
const services_1 = require("../services");
|
|
12
12
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
13
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
13
14
|
const router = express_1.default.Router();
|
|
14
15
|
router.use((0, use_collection_1.default)('directus_operations'));
|
|
15
16
|
router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -29,11 +30,11 @@ router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
29
30
|
try {
|
|
30
31
|
if (Array.isArray(req.body)) {
|
|
31
32
|
const items = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
32
|
-
res.locals
|
|
33
|
+
res.locals['payload'] = { data: items };
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
36
|
const item = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
36
|
-
res.locals
|
|
37
|
+
res.locals['payload'] = { data: item };
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
catch (error) {
|
|
@@ -55,7 +56,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
55
56
|
});
|
|
56
57
|
const records = await service.readByQuery(req.sanitizedQuery);
|
|
57
58
|
const meta = await metaService.getMetaForQuery(req.collection, req.sanitizedQuery);
|
|
58
|
-
res.locals
|
|
59
|
+
res.locals['payload'] = { data: records || null, meta };
|
|
59
60
|
return next();
|
|
60
61
|
});
|
|
61
62
|
router.get('/', (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
@@ -65,8 +66,8 @@ router.get('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
65
66
|
accountability: req.accountability,
|
|
66
67
|
schema: req.schema,
|
|
67
68
|
});
|
|
68
|
-
const record = await service.readOne(req.params
|
|
69
|
-
res.locals
|
|
69
|
+
const record = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
70
|
+
res.locals['payload'] = { data: record || null };
|
|
70
71
|
return next();
|
|
71
72
|
}), respond_1.respond);
|
|
72
73
|
router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -82,11 +83,12 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
|
|
|
82
83
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
83
84
|
}
|
|
84
85
|
else {
|
|
85
|
-
|
|
86
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
87
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
86
88
|
}
|
|
87
89
|
try {
|
|
88
90
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
89
|
-
res.locals
|
|
91
|
+
res.locals['payload'] = { data: result };
|
|
90
92
|
}
|
|
91
93
|
catch (error) {
|
|
92
94
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -101,10 +103,10 @@ router.patch('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
101
103
|
accountability: req.accountability,
|
|
102
104
|
schema: req.schema,
|
|
103
105
|
});
|
|
104
|
-
const primaryKey = await service.updateOne(req.params
|
|
106
|
+
const primaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
105
107
|
try {
|
|
106
108
|
const item = await service.readOne(primaryKey, req.sanitizedQuery);
|
|
107
|
-
res.locals
|
|
109
|
+
res.locals['payload'] = { data: item || null };
|
|
108
110
|
}
|
|
109
111
|
catch (error) {
|
|
110
112
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -126,7 +128,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
126
128
|
await service.deleteMany(req.body.keys);
|
|
127
129
|
}
|
|
128
130
|
else {
|
|
129
|
-
|
|
131
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
132
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
130
133
|
}
|
|
131
134
|
return next();
|
|
132
135
|
}), respond_1.respond);
|
|
@@ -135,7 +138,7 @@ router.delete('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
135
138
|
accountability: req.accountability,
|
|
136
139
|
schema: req.schema,
|
|
137
140
|
});
|
|
138
|
-
await service.deleteOne(req.params
|
|
141
|
+
await service.deleteOne(req.params['pk']);
|
|
139
142
|
return next();
|
|
140
143
|
}), respond_1.respond);
|
|
141
144
|
exports.default = router;
|
|
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
|
|
|
10
10
|
const validate_batch_1 = require("../middleware/validate-batch");
|
|
11
11
|
const services_1 = require("../services");
|
|
12
12
|
const async_handler_1 = __importDefault(require("../utils/async-handler"));
|
|
13
|
+
const sanitize_query_1 = require("../utils/sanitize-query");
|
|
13
14
|
const router = express_1.default.Router();
|
|
14
15
|
router.use((0, use_collection_1.default)('directus_panels'));
|
|
15
16
|
router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -29,11 +30,11 @@ router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
29
30
|
try {
|
|
30
31
|
if (Array.isArray(req.body)) {
|
|
31
32
|
const items = await service.readMany(savedKeys, req.sanitizedQuery);
|
|
32
|
-
res.locals
|
|
33
|
+
res.locals['payload'] = { data: items };
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
36
|
const item = await service.readOne(savedKeys[0], req.sanitizedQuery);
|
|
36
|
-
res.locals
|
|
37
|
+
res.locals['payload'] = { data: item };
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
catch (error) {
|
|
@@ -55,7 +56,7 @@ const readHandler = (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
55
56
|
});
|
|
56
57
|
const records = await service.readByQuery(req.sanitizedQuery);
|
|
57
58
|
const meta = await metaService.getMetaForQuery(req.collection, req.sanitizedQuery);
|
|
58
|
-
res.locals
|
|
59
|
+
res.locals['payload'] = { data: records || null, meta };
|
|
59
60
|
return next();
|
|
60
61
|
});
|
|
61
62
|
router.get('/', (0, validate_batch_1.validateBatch)('read'), readHandler, respond_1.respond);
|
|
@@ -65,8 +66,8 @@ router.get('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
65
66
|
accountability: req.accountability,
|
|
66
67
|
schema: req.schema,
|
|
67
68
|
});
|
|
68
|
-
const record = await service.readOne(req.params
|
|
69
|
-
res.locals
|
|
69
|
+
const record = await service.readOne(req.params['pk'], req.sanitizedQuery);
|
|
70
|
+
res.locals['payload'] = { data: record || null };
|
|
70
71
|
return next();
|
|
71
72
|
}), respond_1.respond);
|
|
72
73
|
router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handler_1.default)(async (req, res, next) => {
|
|
@@ -82,11 +83,12 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
|
|
|
82
83
|
keys = await service.updateMany(req.body.keys, req.body.data);
|
|
83
84
|
}
|
|
84
85
|
else {
|
|
85
|
-
|
|
86
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
87
|
+
keys = await service.updateByQuery(sanitizedQuery, req.body.data);
|
|
86
88
|
}
|
|
87
89
|
try {
|
|
88
90
|
const result = await service.readMany(keys, req.sanitizedQuery);
|
|
89
|
-
res.locals
|
|
91
|
+
res.locals['payload'] = { data: result };
|
|
90
92
|
}
|
|
91
93
|
catch (error) {
|
|
92
94
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -101,10 +103,10 @@ router.patch('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
101
103
|
accountability: req.accountability,
|
|
102
104
|
schema: req.schema,
|
|
103
105
|
});
|
|
104
|
-
const primaryKey = await service.updateOne(req.params
|
|
106
|
+
const primaryKey = await service.updateOne(req.params['pk'], req.body);
|
|
105
107
|
try {
|
|
106
108
|
const item = await service.readOne(primaryKey, req.sanitizedQuery);
|
|
107
|
-
res.locals
|
|
109
|
+
res.locals['payload'] = { data: item || null };
|
|
108
110
|
}
|
|
109
111
|
catch (error) {
|
|
110
112
|
if (error instanceof exceptions_1.ForbiddenException) {
|
|
@@ -126,7 +128,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
126
128
|
await service.deleteMany(req.body.keys);
|
|
127
129
|
}
|
|
128
130
|
else {
|
|
129
|
-
|
|
131
|
+
const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
|
|
132
|
+
await service.deleteByQuery(sanitizedQuery);
|
|
130
133
|
}
|
|
131
134
|
return next();
|
|
132
135
|
}), respond_1.respond);
|
|
@@ -135,7 +138,7 @@ router.delete('/:pk', (0, async_handler_1.default)(async (req, res, next) => {
|
|
|
135
138
|
accountability: req.accountability,
|
|
136
139
|
schema: req.schema,
|
|
137
140
|
});
|
|
138
|
-
await service.deleteOne(req.params
|
|
141
|
+
await service.deleteOne(req.params['pk']);
|
|
139
142
|
return next();
|
|
140
143
|
}), respond_1.respond);
|
|
141
144
|
exports.default = router;
|