synolia / sylius-gdpr-plugin
Synolia sylius GDPR plugin.
Installs: 126 652
Dependents: 0
Suggesters: 0
Security: 0
Stars: 19
Watchers: 11
Forks: 11
Open Issues: 2
Type:sylius-plugin
pkg:composer/synolia/sylius-gdpr-plugin
Requires
- php: ^8.2
- php-http/message-factory: ^1.1
- phpdocumentor/reflection-docblock: ^5.3
- sylius/sylius: ^2.0
- symfony/property-info: ^6.4|^7.0
Requires (Dev)
- j13k/yaml-lint: ^1.1
- php-parallel-lint/php-parallel-lint: ^1.4
- phpmd/phpmd: ^2.15.0
- phpro/grumphp: ^2.9
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^2.0
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpstan/phpstan-webmozart-assert: ^2.0
- phpunit/phpunit: ^9.5
- povils/phpmnd: ^3.0
- rector/rector: ^2.0
- seld/jsonlint: ^1.11
- squizlabs/php_codesniffer: ^3.11
- sylius-labs/coding-standard: ^4.3
- symfony/browser-kit: ^6.4
- symfony/debug-bundle: ^6.4
- symfony/dotenv: ^6.4
- symfony/intl: ^6.4
- symfony/web-profiler-bundle: ^6.4
README
Sylius GDPR Plugin
Features
- Anonymize customer with the GDPR section in the admin customer show.
- Export customer data with the GDPR section in the admin customer show.
Click to see the anonymization configuration.
Click to see the export data configuration.
- Anonymize any entity with command for example :
php bin/console synolia:gdpr:anonymize --entity='Sylius\Component\Core\Model\Customer' --id=1
Use --help to get more informations
Requirements
| Version | |
|---|---|
| PHP | ^8.2 |
| Sylius | ^2.0 |
Installation
-
Add the bundle and dependencies in your composer.json :
composer require synolia/sylius-gdpr-plugin --no-scripts
-
Create required config in
config/packages/gdpr.yamlfile:imports: - { resource: "@SynoliaSyliusGDPRPlugin/Resources/config/app/config.yaml" }
-
Create routing in
config/routes/gdpr.yamlfile:synolia_gdpr: resource: "@SynoliaSyliusGDPRPlugin/Resources/config/routes.yaml" prefix: '/%sylius_admin.path_name%'
-
Process translations
php bin/console translation:extract en SynoliaSyliusGDPRPlugin --dump-messages php bin/console translation:extract fr SynoliaSyliusGDPRPlugin --dump-messages
-
Clear cache
php bin/console cache:clear
Add anonymization configuration
synolia_sylius_gdpr: disable_default_mappings: false # False by default anonymization: mappings: paths: - # Your\Paths\To\Mappings\Directory
Example of configuration
Sylius\Component\Core\Model\Address: # Your class path properties: firstName: faker: text # let's see => https://fakerphp.github.io/formatters/ args: [20] # The associated faker arguments prefix: 'anonymized-' lastName: value: 'Fake lastName' prefix: 'anonymized-'
value can be null, an array, an int, a string and an expression language
Example of configuration with dynamic value
Sylius\Component\Core\Model\Customer: properties: firstName: value: '@="some-arbitrary-text..." ~ object.getId() ~ "...more-arbitrary-text"'
Note:
your expression language must starts with
@=to be evaluated properly
variable
objectis the current entity you are dealing with (e.g. in that caseSylius\Component\Core\Model\Customer)
Add form in advanced actions page
There's two steps to add your custom form into the page:
- Override the controller service by setting the link of your FormType in the $formsType variable
Synolia\SyliusGDPRPlugin\Controller\AdvancedActionsController: arguments: $formsType: - 'Synolia\SyliusGDPRPlugin\Form\Type\Actions\AnonymizeCustomerNotLoggedSinceType' tags: ['controller.service_arguments']
or use php attributes
#[AsController]on your controller and#[Autowire(AnonymizeCustomerNotLoggedSinceType::class)]in your constructor for$formsTypeparameter
- Then create your form processor by implementing Synolia\SyliusGDPRPlugin\Processor\AnonymizerProcessor\AdvancedActionsFormDataProcessorInterface
There a form processor example
Events
- Synolia\SyliusGDPRPlugin\Event\BeforeAnonymize
- Synolia\SyliusGDPRPlugin\Event\AfterAnonymize
- Synolia\SyliusGDPRPlugin\Event\BeforeCustomerAnonymize
- Synolia\SyliusGDPRPlugin\Event\AfterCustomerAnonymize
- Synolia\SyliusGDPRPlugin\Event\BeforeExportCustomerData
Development
See How to contribute.
License
This library is under the EUPL-1.2 license.
Credits
Developed by Synolia.
