synolia / sylius-gdpr-plugin
Synolia sylius GDPR plugin.
Installs: 93 668
Dependents: 0
Suggesters: 0
Security: 0
Stars: 18
Watchers: 13
Forks: 9
Open Issues: 3
Type:sylius-plugin
Requires
- php: ^8.2
- php-http/message-factory: ^1.1
- phpdocumentor/reflection-docblock: ^5.3
- sylius/sylius: ^1.12
- symfony/property-info: ^6.4
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 | ^1.12 |
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.yaml
file:imports: - { resource: "@SynoliaSyliusGDPRPlugin/Resources/config/app/config.yaml" }
-
Create routing in
config/routes/gdpr.yaml
file: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
object
is 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$formsType
parameter
- 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.