From 2606b511ad2c0e29560ea60972296e899e552208 Mon Sep 17 00:00:00 2001 From: Jurj-Bogdan Date: Thu, 16 Jan 2025 16:49:02 +0200 Subject: [PATCH 1/4] upgrade from 5.2 to 5.3 steps Signed-off-by: Jurj-Bogdan --- docs/book/v5/upgrading.md | 32 +++--- docs/book/v5/upgrading/UPGRADE-5.3.md | 159 ++++++++++++++++++++++++++ 2 files changed, 176 insertions(+), 15 deletions(-) create mode 100644 docs/book/v5/upgrading/UPGRADE-5.3.md diff --git a/docs/book/v5/upgrading.md b/docs/book/v5/upgrading.md index c22d29b..9379cbd 100644 --- a/docs/book/v5/upgrading.md +++ b/docs/book/v5/upgrading.md @@ -1,15 +1,17 @@ -# Upgrades - -Dotkernel API does not provide an automatic upgrade path. -Instead, the recommended procedure is to manually implement each modification listed in [releases](https://github.com/dotkernel/api/releases). -Additionally, release info can also be accessed as an [RSS](https://github.com/dotkernel/api/releases.atom) feed. - -## Upgrade procedure - -Once you clone Dotkernel API, you will find a [CHANGELOG.md](https://github.com/dotkernel/api/blob/5.0/CHANGELOG.md) file in the root of the project. -This file contains a list of already implemented features in reverse chronological order. -You can use this file to track the version of your copy of Dotkernel API. - -For each new release you need implement the modifications from its pull requests in your project. -It is recommended to copy the release info into your project's CHANGELOG.md file. -This allows you to track your API's version and keep your project up-to-date with future releases. +# Upgrades + +Dotkernel API does not provide an automatic upgrade path. +Instead, the recommended procedure is to manually implement each modification listed in [releases](https://github.com/dotkernel/api/releases). +Additionally, release info can also be accessed as an [RSS](https://github.com/dotkernel/api/releases.atom) feed. + +## Upgrade procedure + +Once you clone Dotkernel API, you will find a [CHANGELOG.md](https://github.com/dotkernel/api/blob/5.0/CHANGELOG.md) file in the root of the project. +This file contains a list of already implemented features in reverse chronological order. +You can use this file to track the version of your copy of Dotkernel API. + +For each new release you need implement the modifications from its pull requests in your project. +It is recommended to copy the release info into your project's CHANGELOG.md file. +This allows you to track your API's version and keep your project up-to-date with future releases. + +Starting from [version 5.3](upgrading/UPGRADE-5.3.md) the upgrading procedure is detailed version to version. diff --git a/docs/book/v5/upgrading/UPGRADE-5.3.md b/docs/book/v5/upgrading/UPGRADE-5.3.md new file mode 100644 index 0000000..83a9f88 --- /dev/null +++ b/docs/book/v5/upgrading/UPGRADE-5.3.md @@ -0,0 +1,159 @@ +# UPGRADE FROM 5.2 TO 5.3 + +------------------------- + +Dotkernel API 5.3 is a minor release. As such, no significant backward compatibility breaks are expected, +with minor backward compatibility breaks being prefixed in this document with `[BC BREAK]`. + +This document only covers upgrading from version 5.2. + +## Table of Contents + +------------------------- + +* [Update Phpstan memory limit](#update-phpstan-memory-limit) +* [Update anonymization](#update-anonymization) +* [Update User status and remove isDeleted properties](#update-user-status-and-remove-isdeleted-properties) +* [Update dotkernel/dot-mail to version 5.0](#update-dotkerneldot-mail-to-version-50) +* [Add post install script](#add-post-install-script) +* [Remove post-create-project-cmd](#remove-post-create-project-cmd) +* [Update security.txt](#update-securitytxt) +* [Update coding standards](#update-coding-standards) +* [Fix codecov.yml](#fix-codecovyml) +* [Update Qodana configuration](#update-qodana-configuration) +* [Remove laminas/laminas-http](#remove-laminaslaminas-http) + +### Update Phpstan memory limit + +* Add the `--memory-limit 1G` option to the `static-analysis` script found in `composer.json` + > With the default `memory_limit=128M` on our WSL containers, PHPStan runs out of memory + > + > Note that you can set the memory limit to a value of your choosing, with a recommended minimum of 256M + +### Update anonymization + +* Add the `userAnonymizeAppend` key to the returned array in `config/autoload/local.php`, as well as to the distributed`config/autoload/local.php.dist` + +```php +'userAnonymizeAppend' => '', +``` + +* Update the `anonymizeUser` function in `src/User/src/Service/UserService.php` to use the new key + +Before: + +```php +$user->setIdentity($placeholder) //... +``` + +After: + +```php +$user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... +``` + +> Note that any custom functionality using the old format will require updates + +### Update User status and remove isDeleted properties + +* [BC Break] Remove the `isDeleted` property from the `User` class, alongside all usages, as seen in the [pull request](https://github.com/dotkernel/api/pull/359/files) +* Add a new "deleted" case to `UserStatusEnum`, which is to be used instead of the previous `isDeleted` property +* Update the database and it's migrations to reflect the new structure + > The use of "isDeleted" was redundant in the default application, and as such was removed + > + > All default methods are updated, but any custom functionality using "isDeleted" will require refactoring + +### Update `dotkernel/dot-mail` to version 5.0 + +* Bump `dotkernel/dot-mail` to "^5.0" in `composer.json` +* As the mail configuration file is now directly copied from the vendor via [script](#add-post-install-script), remove the existing `config/autoload/mail.global.php[.dist]` file(s) +* Update the content for each of these configuration files to reflect the new structure from [dotkernel/dot-mail](https://github.com/dotkernel/dot-mail/blob/5.0/config/mail.global.php.dist) +* Remove `Laminas\Mail\ConfigProvider::class` from `config/config.php` + > The list of changes can be seen in the [pull request](https://github.com/dotkernel/api/pull/368/files) + > + > You can read more about the reasons for this change on the [Dotkernel blog](https://www.dotkernel.com/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail/). + +### Remove `post-create-project-cmd` + +* Remove the `post-create-project-cmd` key found under `scripts` in `composer.json` + +```json +"post-create-project-cmd": [ + "@development-enable" +], +``` + +### Add post install script + +* Add `bin/composer-post-install-script.php` to automate the post installation copying of distributed configuration files +* Add the following under the `scripts` key in `composer.json`: + +```json +"post-update-cmd": [ + "php bin/composer-post-install-script.php" +], +``` + +* Remove the following section from `.github/workflows/codecov.yml` and `.github/workflows/static-analysis.yml` + +```yaml +- name: Setup project + run: | + mv config/autoload/local.php.dist config/autoload/local.php + mv config/autoload/mail.global.php.dist config/autoload/mail.global.php + mv config/autoload/local.test.php.dist config/autoload/local.test.php +``` + +> The command can be manually run via `php bin/composer-post-install-script.php` + +### Update security.txt + +* Add the `Preferred-Languages` key to `public/.well-known/security.txt` + > You may include more than one language as comma separated language tags + +### Update coding standards + +* Bump `laminas/laminas-coding-standard` to `^3.0` in `composer.json` +* Add the following to `phpcs.xml` to prevent issues with the fully qualified names from `config/config.php`: + +```xml + + + + +``` + +### Fix codecov.yml + +* Change `COMPOSER_DEV_MODE=1` to the correct syntax `COMPOSER_DEV_MODE: 1` + +### Update Qodana configuration + +* Update `.github/workflows/qodana_code_quality.yml`, specifying the supported PHP versions by adding the `strategy` key: + +```yaml +strategy: + matrix: + php-versions: [ '8.2', '8.3' ] +``` + +* Update the `php-version` key to restrict Qodana to the newly added `php-versions` + +Before: + +```yaml +with: + php-version: "${{ matrix.php }}" +``` + +After: + +```yaml +with: + php-version: ${{ matrix.php-versions }} +``` + +### Remove laminas/laminas-http + +* Remove `laminas/laminas-http` from `composer.json` +* Replace all uses of `Laminas\Http\Response` with `Fig\Http\Message\StatusCodeInterface` in `AuthorizationMiddlewareTest.php` and `ContentNegotiationMiddlewareTest.php` From bd8baa98bde5a74623772ba707d86b192adc2e88 Mon Sep 17 00:00:00 2001 From: Jurj-Bogdan Date: Fri, 17 Jan 2025 16:59:47 +0200 Subject: [PATCH 2/4] file structure & more details Signed-off-by: Jurj-Bogdan --- docs/book/v5/upgrading/UPGRADE-5.3.md | 87 ++++++++++++++++++++--- docs/book/v5/{ => upgrading}/upgrading.md | 4 +- mkdocs.yml | 4 +- 3 files changed, 85 insertions(+), 10 deletions(-) rename docs/book/v5/{ => upgrading}/upgrading.md (87%) diff --git a/docs/book/v5/upgrading/UPGRADE-5.3.md b/docs/book/v5/upgrading/UPGRADE-5.3.md index 83a9f88..4d86d52 100644 --- a/docs/book/v5/upgrading/UPGRADE-5.3.md +++ b/docs/book/v5/upgrading/UPGRADE-5.3.md @@ -11,27 +11,34 @@ This document only covers upgrading from version 5.2. ------------------------- -* [Update Phpstan memory limit](#update-phpstan-memory-limit) +* [Update PHPStan memory limit](#update-phpstan-memory-limit) * [Update anonymization](#update-anonymization) * [Update User status and remove isDeleted properties](#update-user-status-and-remove-isdeleted-properties) * [Update dotkernel/dot-mail to version 5.0](#update-dotkerneldot-mail-to-version-50) * [Add post install script](#add-post-install-script) * [Remove post-create-project-cmd](#remove-post-create-project-cmd) +* [Ignore development files on production env](#ignore-development-files-on-production-env) * [Update security.txt](#update-securitytxt) * [Update coding standards](#update-coding-standards) -* [Fix codecov.yml](#fix-codecovyml) * [Update Qodana configuration](#update-qodana-configuration) * [Remove laminas/laminas-http](#remove-laminaslaminas-http) -### Update Phpstan memory limit +### Update PHPStan memory limit + +Following PHPStan's introduction in version 5.2 for the reasons described on the [Dotkernel blog](https://www.dotkernel.com/php-development/static-analysis-replacing-psalm-with-phpstan/) a minor issue has cropped up: + with the default `memory_limit=128M` on our WSL containers, PHPStan runs out of memory * Add the `--memory-limit 1G` option to the `static-analysis` script found in `composer.json` - > With the default `memory_limit=128M` on our WSL containers, PHPStan runs out of memory - > > Note that you can set the memory limit to a value of your choosing, with a recommended minimum of 256M ### Update anonymization +By default, Dotkernel API uses "soft delete" for it's `User` entities in order to preserve the database entries. + +Anonymization is used to make sure any sensitive information is scrubbed from the system, with the `User`'s `identity`, `email`, `firstName` and `lastName` properties being overwritten by a unique placeholder. + +Version 5.3 is adding an optional suffix from a configuration file, from where it can be used anywhere in the application. + * Add the `userAnonymizeAppend` key to the returned array in `config/autoload/local.php`, as well as to the distributed`config/autoload/local.php.dist` ```php @@ -56,6 +63,12 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ### Update User status and remove isDeleted properties +Up to and including version 5.2, the `User` entity made use of the `UserStatusEnum` to mark the account status (`active` or `inactive`) and marked deleted accounts with the `isDeleted` property. + +Starting from version 5.3 the `isDeleted` property has been removed because, by default, there is no use in having both it and the status property. + +As such, a new `Deleted` case for `UserStatusEnum` is now used to mark a deleted account and remove the redundancy. + * [BC Break] Remove the `isDeleted` property from the `User` class, alongside all usages, as seen in the [pull request](https://github.com/dotkernel/api/pull/359/files) * Add a new "deleted" case to `UserStatusEnum`, which is to be used instead of the previous `isDeleted` property * Update the database and it's migrations to reflect the new structure @@ -65,6 +78,14 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ### Update `dotkernel/dot-mail` to version 5.0 +Dotkernel API uses `dotkernel/dot-mail` to handle the mailing service, which in versions older than 5.0 was based on `laminas/laminas-mail`. + +Due to the deprecation of `laminas/laminas-mail`, a decision was made to switch `dot-mail` to using `symfony/mailer` starting from version 5.0. + +To make the API more future-proof, the upgrade to the new version of `dot-mail` was necessary. + +The default usage of the mailer remains unchanged, with the only required updates being to configuration, as described below: + * Bump `dotkernel/dot-mail` to "^5.0" in `composer.json` * As the mail configuration file is now directly copied from the vendor via [script](#add-post-install-script), remove the existing `config/autoload/mail.global.php[.dist]` file(s) * Update the content for each of these configuration files to reflect the new structure from [dotkernel/dot-mail](https://github.com/dotkernel/dot-mail/blob/5.0/config/mail.global.php.dist) @@ -75,6 +96,8 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ### Remove `post-create-project-cmd` +Installing the API via `composer create-project` is not recommended, and because of this the `post-create-project-cmd` has been removed. + * Remove the `post-create-project-cmd` key found under `scripts` in `composer.json` ```json @@ -85,6 +108,14 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ### Add post install script +To make installing the API less of a hassle, a new post installation script was added. + +This script generates all the configuration files required by default, leaving the user to simply complete the relevant data. + +> Note that the script will not overwrite existing configuration files, preserving any user data +> +> In case the structure of a configuration file needs updating (such as [mail.local.php](#update-dotkerneldot-mail-to-version-50) in this update), simply running the script *will not* make the changes + * Add `bin/composer-post-install-script.php` to automate the post installation copying of distributed configuration files * Add the following under the `scripts` key in `composer.json`: @@ -106,13 +137,49 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... > The command can be manually run via `php bin/composer-post-install-script.php` +### Ignore development files on production env + +These tweaks were added to make sure development files remain untouched on production environments. + +* Restrict codecov to development mode by changing the following section from `.github/workflows/codecov.yml`: + +Before: + +```yaml +- name: Install dependencies with composer + run: composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi +``` + +After: + +```yaml +- name: Install dependencies with composer + env: + COMPOSER_DEV_MODE: 1 + run: composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi +``` + +* Edit `.laminas-ci/pre-run.sh` script by changing `echo "Running $COMMAND"` to `echo "Running pre-run $COMMAND"` and delete the following line: + +```shell +cp config/autoload/mail.global.php.dist config/autoload/mail.global.php +``` + ### Update security.txt +Updated the `security.txt` file to define the preferred language of the security team. + +It is recommended that the `Expires` tag is also updated if necessary. + * Add the `Preferred-Languages` key to `public/.well-known/security.txt` > You may include more than one language as comma separated language tags ### Update coding standards +Dotkernel API uses `laminas/laminas-coding-standard` as its baseline ruleset to ensure adherence to PSR-1 and PSR-12. + +As this package had a major release, the minimum version the API uses was also bumped. + * Bump `laminas/laminas-coding-standard` to `^3.0` in `composer.json` * Add the following to `phpcs.xml` to prevent issues with the fully qualified names from `config/config.php`: @@ -123,11 +190,11 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ``` -### Fix codecov.yml +### Update Qodana configuration -* Change `COMPOSER_DEV_MODE=1` to the correct syntax `COMPOSER_DEV_MODE: 1` +The Qodana code quality workflow has changed its default PHP version to 8.4, which is unsupported by Dotkernel API, resulting in errors. -### Update Qodana configuration +The issue was fixed by restricting Qodana to the supported PHP versions. * Update `.github/workflows/qodana_code_quality.yml`, specifying the supported PHP versions by adding the `strategy` key: @@ -155,5 +222,9 @@ with: ### Remove laminas/laminas-http +Prior to version 5.3, `laminas/laminas-http` was only used in 2 test files to assert if correct status codes were returned. + +This dependency was removed, as the usage in tests was replaced with the existing `StatusCodeInterface`. + * Remove `laminas/laminas-http` from `composer.json` * Replace all uses of `Laminas\Http\Response` with `Fig\Http\Message\StatusCodeInterface` in `AuthorizationMiddlewareTest.php` and `ContentNegotiationMiddlewareTest.php` diff --git a/docs/book/v5/upgrading.md b/docs/book/v5/upgrading/upgrading.md similarity index 87% rename from docs/book/v5/upgrading.md rename to docs/book/v5/upgrading/upgrading.md index 9379cbd..a9a0d51 100644 --- a/docs/book/v5/upgrading.md +++ b/docs/book/v5/upgrading/upgrading.md @@ -14,4 +14,6 @@ For each new release you need implement the modifications from its pull requests It is recommended to copy the release info into your project's CHANGELOG.md file. This allows you to track your API's version and keep your project up-to-date with future releases. -Starting from [version 5.3](upgrading/UPGRADE-5.3.md) the upgrading procedure is detailed version to version. +## Version to version upgrading + +Starting from [version 5.3](UPGRADE-5.3.md) the upgrading procedure is detailed version to version. diff --git a/mkdocs.yml b/mkdocs.yml index a27763c..efd3024 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,7 +22,9 @@ nav: - "Doctrine ORM": v5/installation/doctrine-orm.md - "Test the Installation": v5/installation/test-the-installation.md - "FAQ": v5/installation/faq.md - - Upgrading: v5/upgrading.md + - Upgrading: + - "Upgrading": v5/upgrading/upgrading.md + - "Upgrading 5.2 to 5.3": v5/upgrading/UPGRADE-5.3.md - Flow: - "Middleware Flow": v5/flow/middleware-flow.md - "Default Library Flow": v5/flow/default-library-flow.md From 2c2e28656ed2d3d3cb114d5d32f447646d0475bc Mon Sep 17 00:00:00 2001 From: Jurj-Bogdan Date: Fri, 17 Jan 2025 18:58:42 +0200 Subject: [PATCH 3/4] requested changes Signed-off-by: Jurj-Bogdan --- docs/book/v5/upgrading/UPGRADE-5.3.md | 15 +-------------- mkdocs.yml | 2 +- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/docs/book/v5/upgrading/UPGRADE-5.3.md b/docs/book/v5/upgrading/UPGRADE-5.3.md index 4d86d52..2f0cc77 100644 --- a/docs/book/v5/upgrading/UPGRADE-5.3.md +++ b/docs/book/v5/upgrading/UPGRADE-5.3.md @@ -4,7 +4,6 @@ Dotkernel API 5.3 is a minor release. As such, no significant backward compatibility breaks are expected, with minor backward compatibility breaks being prefixed in this document with `[BC BREAK]`. - This document only covers upgrading from version 5.2. ## Table of Contents @@ -34,9 +33,7 @@ Following PHPStan's introduction in version 5.2 for the reasons described on the ### Update anonymization By default, Dotkernel API uses "soft delete" for it's `User` entities in order to preserve the database entries. - Anonymization is used to make sure any sensitive information is scrubbed from the system, with the `User`'s `identity`, `email`, `firstName` and `lastName` properties being overwritten by a unique placeholder. - Version 5.3 is adding an optional suffix from a configuration file, from where it can be used anywhere in the application. * Add the `userAnonymizeAppend` key to the returned array in `config/autoload/local.php`, as well as to the distributed`config/autoload/local.php.dist` @@ -64,14 +61,12 @@ $user->setIdentity($placeholder . $this->config['userAnonymizeAppend']) //... ### Update User status and remove isDeleted properties Up to and including version 5.2, the `User` entity made use of the `UserStatusEnum` to mark the account status (`active` or `inactive`) and marked deleted accounts with the `isDeleted` property. - Starting from version 5.3 the `isDeleted` property has been removed because, by default, there is no use in having both it and the status property. - As such, a new `Deleted` case for `UserStatusEnum` is now used to mark a deleted account and remove the redundancy. * [BC Break] Remove the `isDeleted` property from the `User` class, alongside all usages, as seen in the [pull request](https://github.com/dotkernel/api/pull/359/files) * Add a new "deleted" case to `UserStatusEnum`, which is to be used instead of the previous `isDeleted` property -* Update the database and it's migrations to reflect the new structure +* Update the database and its migrations to reflect the new structure > The use of "isDeleted" was redundant in the default application, and as such was removed > > All default methods are updated, but any custom functionality using "isDeleted" will require refactoring @@ -79,11 +74,8 @@ As such, a new `Deleted` case for `UserStatusEnum` is now used to mark a deleted ### Update `dotkernel/dot-mail` to version 5.0 Dotkernel API uses `dotkernel/dot-mail` to handle the mailing service, which in versions older than 5.0 was based on `laminas/laminas-mail`. - Due to the deprecation of `laminas/laminas-mail`, a decision was made to switch `dot-mail` to using `symfony/mailer` starting from version 5.0. - To make the API more future-proof, the upgrade to the new version of `dot-mail` was necessary. - The default usage of the mailer remains unchanged, with the only required updates being to configuration, as described below: * Bump `dotkernel/dot-mail` to "^5.0" in `composer.json` @@ -109,7 +101,6 @@ Installing the API via `composer create-project` is not recommended, and because ### Add post install script To make installing the API less of a hassle, a new post installation script was added. - This script generates all the configuration files required by default, leaving the user to simply complete the relevant data. > Note that the script will not overwrite existing configuration files, preserving any user data @@ -168,7 +159,6 @@ cp config/autoload/mail.global.php.dist config/autoload/mail.global.php ### Update security.txt Updated the `security.txt` file to define the preferred language of the security team. - It is recommended that the `Expires` tag is also updated if necessary. * Add the `Preferred-Languages` key to `public/.well-known/security.txt` @@ -177,7 +167,6 @@ It is recommended that the `Expires` tag is also updated if necessary. ### Update coding standards Dotkernel API uses `laminas/laminas-coding-standard` as its baseline ruleset to ensure adherence to PSR-1 and PSR-12. - As this package had a major release, the minimum version the API uses was also bumped. * Bump `laminas/laminas-coding-standard` to `^3.0` in `composer.json` @@ -193,7 +182,6 @@ As this package had a major release, the minimum version the API uses was also b ### Update Qodana configuration The Qodana code quality workflow has changed its default PHP version to 8.4, which is unsupported by Dotkernel API, resulting in errors. - The issue was fixed by restricting Qodana to the supported PHP versions. * Update `.github/workflows/qodana_code_quality.yml`, specifying the supported PHP versions by adding the `strategy` key: @@ -223,7 +211,6 @@ with: ### Remove laminas/laminas-http Prior to version 5.3, `laminas/laminas-http` was only used in 2 test files to assert if correct status codes were returned. - This dependency was removed, as the usage in tests was replaced with the existing `StatusCodeInterface`. * Remove `laminas/laminas-http` from `composer.json` diff --git a/mkdocs.yml b/mkdocs.yml index efd3024..9fca598 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -23,7 +23,7 @@ nav: - "Test the Installation": v5/installation/test-the-installation.md - "FAQ": v5/installation/faq.md - Upgrading: - - "Upgrading": v5/upgrading/upgrading.md + - "Upgrade procedure": v5/upgrading/upgrading.md - "Upgrading 5.2 to 5.3": v5/upgrading/UPGRADE-5.3.md - Flow: - "Middleware Flow": v5/flow/middleware-flow.md From ab3bbc37d5361a4ea334e65b06d1aa5cf80401fd Mon Sep 17 00:00:00 2001 From: Jurj-Bogdan Date: Fri, 17 Jan 2025 18:59:48 +0200 Subject: [PATCH 4/4] extra typo Signed-off-by: Jurj-Bogdan --- docs/book/v5/upgrading/UPGRADE-5.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/book/v5/upgrading/UPGRADE-5.3.md b/docs/book/v5/upgrading/UPGRADE-5.3.md index 2f0cc77..2c01040 100644 --- a/docs/book/v5/upgrading/UPGRADE-5.3.md +++ b/docs/book/v5/upgrading/UPGRADE-5.3.md @@ -32,7 +32,7 @@ Following PHPStan's introduction in version 5.2 for the reasons described on the ### Update anonymization -By default, Dotkernel API uses "soft delete" for it's `User` entities in order to preserve the database entries. +By default, Dotkernel API uses "soft delete" for its `User` entities in order to preserve the database entries. Anonymization is used to make sure any sensitive information is scrubbed from the system, with the `User`'s `identity`, `email`, `firstName` and `lastName` properties being overwritten by a unique placeholder. Version 5.3 is adding an optional suffix from a configuration file, from where it can be used anywhere in the application.