All Projects → flurrybox → enhanced-privacy

flurrybox / enhanced-privacy

Licence: GPL-3.0 license
Magento 2 Enhanced Privacy extension for easier compliance with GDPR. Allows customers to delete, anonymize, or export their personal data.

Programming Languages

PHP
23972 projects - #3 most used programming language
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to enhanced-privacy

stripe
Stripe integration with Magento 2
Stars: ✭ 58 (+28.89%)
Mutual labels:  magento2, magento2-extension, magento2-module
module-catalog
Fixes for some known Magento 2 issues in Catalog
Stars: ✭ 23 (-48.89%)
Mutual labels:  magento2, magento2-extension, magento2-module
module-blog-comments-recaptcha
module-blog-comments-recaptcha
Stars: ✭ 17 (-62.22%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-pimcore-bridge
Magento 2 module for Pimcore integration.
Stars: ✭ 28 (-37.78%)
Mutual labels:  magento2, magento2-extension, magento2-module
PagSeguro-Magento-Transparente-M2
Módulo PagSeguro para Magento 2
Stars: ✭ 15 (-66.67%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento-2-mega-menu
Mageno 2 Mega Menu (Magicmenu) helps you create neat and smart navigation menus to display the main categories on your website.
Stars: ✭ 33 (-26.67%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento-2-security
Magento 2 Security extension FREE. Security extension gives store owners the ability to detect the IP addresses that are intentionally attacking their store at any given time. Therefore, they have timely measures to prevent this issue such as blocking those IP addresses or sending warning emails to store owners.
Stars: ✭ 40 (-11.11%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-sign-in-with-phone-number
This extension allow your customers to login to your Magento store using their phone number.
Stars: ✭ 42 (-6.67%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-module-cron-schedule
A Magento2 visual cronjob overview for magento2 backend
Stars: ✭ 35 (-22.22%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento-ngrok
Magento 2 module for ngrok.io service support
Stars: ✭ 45 (+0%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-sample-imageuploader
A Magento 2 sample module demonstrating how to upload an image file within a grid and form UI Component.
Stars: ✭ 27 (-40%)
Mutual labels:  magento2, magento2-extension, magento2-module
Dev-Tools-Magento-2-Module
A collection of utilities meant to improve the experience of developing modules for Magento without breaking existing functionality.
Stars: ✭ 18 (-60%)
Mutual labels:  magento2, magento2-extension, magento2-module
DiscountCodeUrl
Magento 2 module that applies a discount code automatically via URL
Stars: ✭ 33 (-26.67%)
Mutual labels:  magento2, magento2-extension, magento2-module
module-geoip
Detect Country by IP in Magento 2
Stars: ✭ 51 (+13.33%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-inventory-log
Magento 2 - Inventory Log by KiwiCommerce
Stars: ✭ 33 (-26.67%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento2-checkout-success-misc-script
Add Miscellaneous HTML and JavaScript codes to Magento2 checkout conformation page
Stars: ✭ 26 (-42.22%)
Mutual labels:  magento2, magento2-extension, magento2-module
magento-module-wishlist-api
Adds an API to interact with the Magento2 wishlist.
Stars: ✭ 17 (-62.22%)
Mutual labels:  magento2, magento2-extension, magento2-module
module-wysiwyg-advanced
Extend TinyMCE 4 & 5 tools in Magento 2
Stars: ✭ 60 (+33.33%)
Mutual labels:  magento2, magento2-extension, magento2-module
customer-ajax-login
Free magento 2 extension for Popup and AJAX based Login and Sign Up | Manish Joy
Stars: ✭ 14 (-68.89%)
Mutual labels:  magento2, magento2-extension, magento2-module
module-translation
magefan.com/magento-2-translation-extension
Stars: ✭ 35 (-22.22%)
Mutual labels:  magento2, magento2-extension, magento2-module

Enhanced Privacy extension for Magento 2

Extension provides easier compliance with GDPR. Allows customers to delete, anonymize, or export their personal data. View detailed information on store page.

Getting Started

Prerequisites

Magento 2 Open Source (CE) or Commerce edition (EE). Supported versions: Magento 2.1.6+, 2.2.x

Installation

Composer (recommended)

Commands should be run at the root of your Magento 2 installation.

composer require flurrybox/enhanced-privacy
php bin/magento module:enable Flurrybox_EnhancedPrivacy
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy

Copy package files

  • Download repository files as ZIP archive
  • Extract files to the app/code/Flurrybox/EnhancedPrivacy directory
  • Run the following commands in Magento 2 root folder:
    php bin/magento module:enable Flurrybox_EnhancedPrivacy
    php bin/magento setup:upgrade
    php bin/magento setup:di:compile
    php bin/magento setup:static-content:deploy
    

Usage and Features

  • Configuration for this module is located in 'Stores > Configuration > Customers > Customer Configuration > Privacy (GDPR)'.
  • Account deletion, anonymization, and export can be done in 'My Account > Privacy Settings'.
  • Customers can export their data in .zip archive containing .csv files with personal, wishlist, quote, and address data.
  • Customer can delete or anonymize their account. Current password and reason is required. Account will be deleted within 1 hour (or as specified in configuration), in this time span its possible for customers to undo deletion.
  • If customer has made at least one order, they are ineligible to delete their account, instead it will be anonymized.
  • When a customer visits your store for the first time, a popup notification about cookie policy will be shown.

Export data

Besides default export entites its possible to implement your own custom data export. When customers will make a request for their personal data export, your class instance will be executed by data export processor and will add new file to data archive.

  1. Create a new class implementing Flurrybox\EnhancedPrivacy\Api\DataExportInterface interface.
    <?php
    
    declare(strict_types=1);
    
    namespace Vendor\Module\Privacy\Export;
    
    use Flurrybox\EnhancedPrivacy\Api\DataExportInterface;
    use Magento\Customer\Api\Data\CustomerInterface;
    
    class Entity implements DataExportInterface
    {
        /**
         * Executed upon exporting customer data.
         *
         * Expected return structure:
         *      array(
         *          array('HEADER1', 'HEADER2', 'HEADER3', ...),
         *          array('VALUE1', 'VALUE2', 'VALUE3', ...),
         *          ...
         *      )
         *
         * @param \Magento\Customer\Api\Data\CustomerInterface $customer
         *
         * @return array
         */
        public function export(CustomerInterface $customer)
        {
            ...
        }
    }
  2. Register export class in etc/di.xml
    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
        ...
        <type name="Flurrybox\EnhancedPrivacy\Api\ProcessorsInterface">
            <arguments>
                ...
                <argument name="exportProcessors" xsi:type="array">
                    ...
                    <item name="entity" xsi:type="object">Vendor\Module\Privacy\Export\Entity</item>
                    ...
                </argument>
                ...
            </arguments>
        </type>
        ...
    </config>

Delete and anonymize data

To delete or anonymize data that's gathered by 3rd party integrations you can implement your own data processor.

  1. Create a new class implementing Flurrybox\EnhancedPrivacy\Api\DataDeleteInterface interface.
    <?php
    
    declare(strict_types=1);
    
    namespace Vendor\Module\Privacy\Delete;
    
    use Flurrybox\EnhancedPrivacy\Api\DataDeleteInterface;
    use Magento\Customer\Api\Data\CustomerInterface;
    
    class Entity implements DataDeleteInterface
    {
        /**
         * Executed upon customer data deletion.
         *
         * @param \Magento\Customer\Api\Data\CustomerInterface $customer
         *
         * @return void
         */
        public function delete(CustomerInterface $customer)
        {
            ...
        }
        
        /**
         * Executed upon customer data anonymization.
         *
         * @param \Magento\Customer\Api\Data\CustomerInterface $customer
         *
         * @return void
         */
        public function anonymize(CustomerInterface $customer)
        {
            ...
        }
    }
  2. Register processor class in etc/di.xml
    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
        ...
        <type name="Flurrybox\EnhancedPrivacy\Api\ProcessorsInterface">
            <arguments>
                <argument name="deleteProcessors" xsi:type="array">
                    ...
                    <item name="entity" xsi:type="object">Vendor\Module\Privacy\Delete\Entity</item>
                    ...
                </argument>
            </arguments>
        </type>
        ...
    </config>

Copyrights and License

Copyright (c) 2018 Flurrybox, Ltd. under GNU General Public License ("GPL") v3.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].