Skip to content

Latest commit

 

History

History
152 lines (109 loc) · 4.98 KB

README.md

File metadata and controls

152 lines (109 loc) · 4.98 KB

License CI - Analysis CI - Sylius Version Total Downloads

Sylius GDPR Plugin

Capture

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

  1. Add the bundle and dependencies in your composer.json :

    composer require synolia/sylius-gdpr-plugin --no-scripts
  2. Create required config in config/packages/gdpr.yaml file:

    imports:
        - { resource: "@SynoliaSyliusGDPRPlugin/Resources/config/app/config.yaml" }
  3. Create routing in config/routes/gdpr.yaml file:

    synolia_gdpr:
        resource: "@SynoliaSyliusGDPRPlugin/Resources/config/routes.yaml"
        prefix: '/%sylius_admin.path_name%'
  4. Process translations

    php bin/console translation:extract en SynoliaSyliusGDPRPlugin --dump-messages
    php bin/console translation:extract fr SynoliaSyliusGDPRPlugin --dump-messages
  5. 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 case Sylius\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.