adexos / module-gdpr
Magento 2 的 GDPR 合规模块
Requires
- ext-zip: *
- magento/framework: >=100.1.0
- magento/module-backend: >=100.0.0
- magento/module-config: >=100.0.2
- magento/module-customer: >=100.0.2
- magento/module-email: >=100.0.0
- magento/module-newsletter: >=100.0.2
- magento/module-quote: >=100.0.0
- magento/module-review: >=100.0.0
- magento/module-sales: >=100.0.2
- mikehaertl/phpwkhtmltopdf: ^2.3.1
Requires (Dev)
- magento/marketplace-eqp: ^1.0.0
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-09-22 02:33:51 UTC
README
本扩展允许客户删除、匿名化和导出他们的个人数据。
设置
需要 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 模块
- https://github.com/AdFabConnect/magento2gdpr
- https://github.com/mageplaza/magento-2-gdpr
- https://github.com/staempfli/magento2-module-gdpr
- https://github.com/flurrybox/enhanced-privacy
许可证
此项目受 MIT 许可证的许可 - 请参阅 LICENSE 详细信息。
这就全部了!