adexos/module-gdpr

Magento 2 的 GDPR 合规模块

安装: 2

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 38

类型:magento2-module

3.0.0-beta2 2019-03-21 14:23 UTC

README

Latest Stable Version License: MIT

本扩展允许客户删除、匿名化和导出他们的个人数据。

设置

需要 Magento 2 Open Source 或 Commerce 版本。

版本 3.x 与 Magento 2.3.x 兼容。
版本 2.x 与 Magento 2.2.x 兼容。
版本 1.x 与 Magento 2.1.x 兼容。

本模块不支持 Magento 2.0.x,因为此版本不再维护。

获取软件包

ZIP 软件包

将软件包解压到 app/code/Opengento/Gdpr。

Composer 软件包

composer require opengento/module-gdpr

安装模块

然后,运行以下 magento 命令

bin/magento setup:upgrade

如果您处于生产模式,请务必重新编译和重新部署静态资源。

使用方法

  • GDPR 第 17 条
    • 在 '我的账户 > 隐私设置' 中可以进行账户删除和匿名化。
    • 客户可以使用他们的 '被遗忘权'。为了确保客户的可识别性,需要密码。账户将在 1 小时内被删除,或如配置中指定。在此时间范围内,客户可以撤销此操作。
  • GDPR 第 20 条
    • 在 '我的账户 > 隐私设置' 中可以进行个人数据导出。
    • 客户可以导出包含文件、.html(许多其他格式可用)的 .zip 归档,其中包含个人数据。
  • 在客户第一次访问时显示的弹窗中展示 Cookie 政策。

设置

此模块的配置位于 '商店 > 配置 > 客户 > 客户配置 > 隐私(GDPR)'。
设置如下所示

  • 常规设置
    • 启用模块
    • GDPR 信息 CMS 页面
    • GDPR 信息 CMS 块
  • 删除设置
    • 启用功能
    • 删除策略(匿名化或删除)
    • 删除时间间隔
    • Cron 调度程序
    • 删除权信息 CMS 块
    • 匿名化信息 CMS 块
    • 如果没有订单则删除客户
    • 将删除策略应用于特定组件
  • 导出设置
    • 启用功能
    • 导出个人数据信息 CMS 块
    • 导出渲染器选项
    • 要导出的客户属性
    • 要导出的客户地址属性
  • Cookie 设置
    • 启用 Cookie 揭示
    • Cookie 政策信息 CMS 块

开发者

以下文档解释了如何将您自己的处理器添加到工作流中。

扩展导出

为了导出您的自定义组件,您必须创建一个新的处理器。
要创建一个新的处理器,您必须实现以下接口: \Opengento\Gdpr\Service\Export\ProcessorInterface
然后,按照说明将您的处理器注册到以下池 \Opengento\Gdpr\Service\Export\ProcessorPool

<type name="Opengento\Gdpr\Service\Export\ProcessorPool">
    <arguments>
        <argument name="array" xsi:type="array">
            <item name="my_component" xsi:type="string">\Vendor\Module\ExportProcessor</item>
        </argument>
    </arguments>
</type>

您还可以创建您自己的自定义导出渲染器,使其看起来像您想要的样子。
为了实现这一点,您必须实现以下接口: \Opengento\Gdpr\Service\Export\RendererInterface
然后,按照说明将您的渲染器注册到以下池 \Opengento\Gdpr\Service\Export\RendererPool

<type name="Opengento\Gdpr\Service\Export\RendererPool">
    <arguments>
        <argument name="array" xsi:type="array">
            <item name="my_renderer" xsi:type="string">\Vendor\Module\ExportRenderer</item>
        </argument>
    </arguments>
</type>

扩展删除

为了删除您的自定义组件,您必须创建一个新的处理器。
要创建一个新的处理器,您必须实现以下接口: \Opengento\Gdpr\Service\Delete\ProcessorInterface
然后,按照描述将您的处理器注册到以下池中 \Opengento\Gdpr\Service\Delete\ProcessorPool

<type name="Opengento\Gdpr\Service\Delete\ProcessorPool">
    <arguments>
        <argument name="array" xsi:type="array">
            <item name="my_component" xsi:type="string">\Vendor\Module\DeleteProcessor</item>
        </argument>
    </arguments>
</type>

扩展匿名化

为了使您的自定义组件匿名化,您必须创建一个新的处理器。
要创建一个新的处理器,您必须实现以下接口: \Opengento\Gdpr\Service\Anonymize\ProcessorInterface
然后,按照描述将您的处理器注册到以下池中 \Opengento\Gdpr\Service\Anonymize\ProcessorPool

<type name="Opengento\Gdpr\Service\Anonymize\ProcessorPool">
    <arguments>
        <argument name="array" xsi:type="array">
            <item name="my_component" xsi:type="string">\Vendor\Module\AnonymizeProcessor</item>
        </argument>
    </arguments>
</type>

删除策略

此模块允许您为不同的处理器定义应用策略。
您可以通过管理员系统配置来配置它,但您也可以通过 etc/di.xml 文件来“作弊”,定义应用策略。请注意,配置的设置始终是优先检查的。要通过代码实现,请按以下方式添加您的首选项

<type name="Opengento\Gdpr\Model\Config\ErasureComponentStrategy">
    <arguments>
        <argument name="componentsStrategies" xsi:type="array">
            <item name="component_name_1" xsi:type="const">Opengento\Gdpr\Service\ErasureStrategy::STRATEGY_ANONYMIZE</item>        
            <item name="component_name_2" xsi:type="const">Opengento\Gdpr\Service\ErasureStrategy::STRATEGY_DELETE</item>        
            <item name="component_name_3" xsi:type="string">custom_strategy_code</item>        
        </argument>
    </arguments>
</type>

警告,如果您想实现自己的策略类型,您必须创建自己的策略类对象,但您将能够使用 Opengento\Gdpr\Model\Config\ErasureComponentStrategy 通过策略为您的组件提供服务。
不要忘记使用正确的服务管理器,但您可以使用自己的。

  • Opengento\Gdpr\Service\AnonymizeManagement
  • Opengento\Gdpr\Service\DeleteManagement

如何覆盖类和方法

在此处不需要插件和首选项来覆盖和扩展 GDPR 模块的核心代码。
实际上,您应该应用模式来实现它。

池模式已经允许您覆盖您选择的类。
但是您将无法通过“final”关键字扩展现有的类。确实,您需要创建自己的类,该类实现了相同的接口。然后,只需将您想“扩展”的类作为组合添加即可。您将能够利用结果并在方法中覆盖它。

例如

interface I { public function execute(array $data): array; }
final class A implements I { public function execute(array $data): array { //process $data } }

final class B implements I {
    private $a;
    
    public function __construct(A $a) { $this->a = $a; }
    
    public function execute(array $data): array
    {
        $resultA = $this->a->execute($data);

        $resultB = $resultA; // transform $resultA
        
        return $resultB;
    }
}

然后

<type name="Pool">
    <arguments>
        <argument name="array" xsi:type="array">
            <argument name="a" xsi:type="string">A</argument>        
        </argument>
    </arguments>
</type>

通过以下方式覆盖

<type name="Pool">
    <arguments>
        <argument name="array" xsi:type="array">
            <argument name="a" xsi:type="string">B</argument>        
        </argument>
    </arguments>
</type>

恭喜!您已覆盖了类 A 而没有扩展它!

支持

向问题跟踪器提出新的 请求
请提供您的 Magento 2 版本和模块版本。解释如何重现您的问题以及期望的结果。

作者

类似 Magento 2 GDPR 模块

许可证

此项目受 MIT 许可证的许可 - 请参阅 LICENSE 详细信息。

这就全部了!