From 98f84cc6c0a24c6abc7332348986a2f181b80b87 Mon Sep 17 00:00:00 2001 From: mcassier31 Date: Mon, 7 Aug 2023 07:13:57 +0200 Subject: [PATCH] small updates --- .../01_Upgrade_Notes.md | 6 ++--- doc/02_Basic_Principle.md | 21 +++++++++--------- .../01_Configuration/03_Security_Settings.md | 2 +- .../01_Configuration/04_Custom_Permissions.md | 4 +--- doc/20_Deployment.md | 4 ++-- doc/img/add_config.png | Bin 8495 -> 8872 bytes 6 files changed, 17 insertions(+), 20 deletions(-) diff --git a/doc/01_Installation_and_Upgrade/01_Upgrade_Notes.md b/doc/01_Installation_and_Upgrade/01_Upgrade_Notes.md index 961b95a6..d5531bc4 100644 --- a/doc/01_Installation_and_Upgrade/01_Upgrade_Notes.md +++ b/doc/01_Installation_and_Upgrade/01_Upgrade_Notes.md @@ -3,15 +3,15 @@ ## 1.6.0 - [General] If you want to use data-hub 1.6 and Pimcore 11, please make sure to require the `pimcore/admin-ui-classic-bundle`. - [Config Location] Change default directory for configurations to `var/config/data_hub` -- When using Pimcore 11 configurations from `datahub-configurations.php` are no longer used. To migrate those configurations +- When using Pimcore 11, configurations from `datahub-configurations.php` are no longer used. To migrate those configurations to the settings store, use the provided `datahub:configuration:migrate-legacy-config` command. -- Added the ability to import and export each type of data-hub configuration. +- Added the ability to import and export each type of Datahub configuration. Be sure to include the `supported_types` configuration in any custom implementation to use the import functionality! - Added possibility to disable the introspection for GraphQL via configuration tree. ## 1.5.0 - When "Skip Permission Check" is active in a GraphQL configuration, the "Workspaces" settings are also skipped -- It is possible to add more than one API-key per configuration now. Therefore, the API-key gets stored as an array +- It is possible to add more than one API-key per configuration now. Therefore, the API-keys get stored as an array in the configuration. Configurations from previous versions are still supported, but they get converted to the new format as soon as they get saved. - Added "Translation Listing" and "Translation" to the Generic Types diff --git a/doc/02_Basic_Principle.md b/doc/02_Basic_Principle.md index 505fc6a9..5fda502f 100644 --- a/doc/02_Basic_Principle.md +++ b/doc/02_Basic_Principle.md @@ -1,23 +1,22 @@ # Basic Principle -Pimcore Datahub allows defining multiple endpoints that allow data delivery and consumption. These -endpoints are configured via so called configurations that can be added in Pimcore admin user interface: +Pimcore Datahub allows defining multiple endpoints that allow data delivery and consumption. These endpoints are configured via so called configurations that can be added in the Pimcore admin user interface: -## Adding a new configuration +## Adding a New Configuration -Open Datahub configuration panel +1. Open the Datahub configuration panel: ![Configuration Overview](./img/graphql/configuration3.png) -Choose endpoint technology +2. Choose an endpoint technology: ![Add Configuration](./img/add_config.png) -And get the configuration done by defining -- general settings -- schema configuration -- security definitions -- and additional settings +3. Get the configuration done by defining the followings: +- General settings +- Schema configuration +- Security definitions +- Additional settings -Example for [GraphQL](./10_GraphQL/README.md) +Here you can find an example for [GraphQL](./10_GraphQL/README.md). diff --git a/doc/10_GraphQL/01_Configuration/03_Security_Settings.md b/doc/10_GraphQL/01_Configuration/03_Security_Settings.md index 60f673e6..f01e6378 100644 --- a/doc/10_GraphQL/01_Configuration/03_Security_Settings.md +++ b/doc/10_GraphQL/01_Configuration/03_Security_Settings.md @@ -2,7 +2,7 @@ ## Authentication -Defines how users are authenticated when accessing the endpoint. +Here you can define how users are authenticated when accessing the endpoint. #### Supported Methods diff --git a/doc/10_GraphQL/01_Configuration/04_Custom_Permissions.md b/doc/10_GraphQL/01_Configuration/04_Custom_Permissions.md index 0cca365f..78a0136f 100644 --- a/doc/10_GraphQL/01_Configuration/04_Custom_Permissions.md +++ b/doc/10_GraphQL/01_Configuration/04_Custom_Permissions.md @@ -1,8 +1,6 @@ # Custom Permissions -When creating custom queries or creating other custom extensions to Datahub, it might be useful to -add additional permissions to define access rules for certain data entities (like it is possible to -define access for documents, assets, etc.). +When creating custom queries or creating other custom extensions to Datahub, it might be useful to add additional permissions to define access rules for certain data entities (like it is possible to define access for Documents, Assets, etc.). ## Adding Custom Permissions diff --git a/doc/20_Deployment.md b/doc/20_Deployment.md index 7fdc42c3..cbd6208d 100644 --- a/doc/20_Deployment.md +++ b/doc/20_Deployment.md @@ -11,11 +11,11 @@ When deploying configurations following steps are necessary: - Rebuild workspaces by running `datahub:configuration:rebuild-workspaces` -Either call +Either call: ```bash datahub:configuration:rebuild-workspaces ``` -to do that for all definitions, or +to do that for all definitions, or: ```bash diff --git a/doc/img/add_config.png b/doc/img/add_config.png index 86e2ca29563760a2022d5e9a9b17c822aa1425c1..a81a52d3f198470290b0f715d81f7af3f842c5ce 100644 GIT binary patch literal 8872 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 literal 8495 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