├── .gitignore
├── Block
└── Customer
│ └── Button.php
├── Controller
├── Customer.php
├── Customer
│ ├── Index.php
│ └── Save.php
└── Index
│ └── Index.php
├── Helper
└── Data.php
├── Model
├── Config
│ └── Source
│ │ ├── Align.php
│ │ ├── More.php
│ │ ├── Position.php
│ │ └── Width.php
├── Contact.php
└── ResourceModel
│ ├── Contact.php
│ └── Contact
│ └── Collection.php
├── Observer
├── CheckUserCreateObserver.php
└── CheckUserLoginObserver.php
├── README.md
├── composer.json
├── etc
├── acl.xml
├── adminhtml
│ └── system.xml
├── config.xml
├── events.xml
├── frontend
│ └── routes.xml
└── module.xml
├── registration.php
└── view
└── frontend
├── layout
├── customer_account.xml
├── customer_account_create.xml
├── customer_account_login.xml
├── default.xml
├── gdpr_customer_index.xml
└── sales_order_print.xml
├── requirejs-config.js
├── templates
├── customer
│ ├── button.phtml
│ └── form
│ │ ├── login.phtml
│ │ └── register.phtml
└── html
│ └── notices.phtml
└── web
├── css
└── source
│ └── _module.less
└── js
└── gdpr.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # General
2 | .DS_Store
3 | .AppleDouble
4 | .LSOverride
5 |
6 | # Icon must end with two \r
7 | Icon
8 |
9 | # Thumbnails
10 | ._*
11 |
12 | # Files that might appear in the root of a volume
13 | .DocumentRevisions-V100
14 | .fseventsd
15 | .Spotlight-V100
16 | .TemporaryItems
17 | .Trashes
18 | .VolumeIcon.icns
19 | .com.apple.timemachine.donotpresent
20 |
21 | # Directories potentially created on remote AFP share
22 | .AppleDB
23 | .AppleDesktop
24 | Network Trash Folder
25 | Temporary Items
26 | .apdisk
--------------------------------------------------------------------------------
/Block/Customer/Button.php:
--------------------------------------------------------------------------------
1 | getUrl('gdpr/customer/save');
22 | }
23 | }
--------------------------------------------------------------------------------
/Controller/Customer.php:
--------------------------------------------------------------------------------
1 | customerSession = $customerSession;
39 | parent::__construct($context);
40 | }
41 |
42 | /**
43 | * Check customer authentication for some actions
44 | *
45 | * @param \Magento\Framework\App\RequestInterface $request
46 | * @return \Magento\Framework\App\ResponseInterface
47 | */
48 | public function dispatch(RequestInterface $request)
49 | {
50 | if (!$this->customerSession->authenticate()) {
51 | $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
52 | }
53 | return parent::dispatch($request);
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Controller/Customer/Index.php:
--------------------------------------------------------------------------------
1 | resultFactory->create(ResultFactory::TYPE_PAGE);
27 | if ($navigationBlock = $resultPage->getLayout()->getBlock('customer_account_navigation')) {
28 | $navigationBlock->setActive('gdpr/customer');
29 | }
30 | $resultPage->getConfig()->getTitle()->set(__('GDPR'));
31 | return $resultPage;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Controller/Customer/Save.php:
--------------------------------------------------------------------------------
1 | storeManager = $storeManager;
72 | $this->formKeyValidator = $formKeyValidator;
73 | $this->customerRepository = $customerRepository;
74 | $this->_quoteFactory = $quoteFactory;
75 | $this->_contactFactory = $contactFactory;
76 | $this->registry = $registry;
77 | parent::__construct($context, $customerSession);
78 | }
79 |
80 | /**
81 | * Retrieve cookie manager
82 | *
83 | * @deprecated 100.1.0
84 | * @return PhpCookieManager
85 | */
86 | private function getCookieManager()
87 | {
88 | if (!$this->cookieMetadataManager) {
89 | $this->cookieMetadataManager = ObjectManager::getInstance()->get(PhpCookieManager::class);
90 | }
91 | return $this->cookieMetadataManager;
92 | }
93 |
94 | /**
95 | * Retrieve cookie metadata factory
96 | *
97 | * @deprecated 100.1.0
98 | * @return CookieMetadataFactory
99 | */
100 | private function getCookieMetadataFactory()
101 | {
102 | if (!$this->cookieMetadataFactory) {
103 | $this->cookieMetadataFactory = ObjectManager::getInstance()->get(CookieMetadataFactory::class);
104 | }
105 | return $this->cookieMetadataFactory;
106 | }
107 |
108 | /**
109 | * Save newsletter subscription preference action
110 | *
111 | * @return void|null
112 | */
113 | public function execute()
114 | {
115 | if (!$this->formKeyValidator->validate($this->getRequest())) {
116 | return $this->_redirect('customer/account/');
117 | }
118 |
119 | $customerId = $this->customerSession->getCustomerId();
120 | $customerEmail = $this->customerSession->getCustomer()->getEmail();
121 | if ($customerId === null) {
122 | $this->messageManager->addError(__('Something went wrong while saving your subscription.'));
123 | } else {
124 | try {
125 | if ((boolean)$this->getRequest()->getParam('remove_account', false)) {
126 | $this->registry->register('isSecureArea', true);
127 | $this->customerRepository->deleteById($customerId);
128 |
129 | $quoteCollection = $this->_quoteFactory->create()->addFieldToFilter('customer_email', $customerEmail);
130 |
131 | if(count($quoteCollection)>0){
132 | foreach($quoteCollection as $_quote){
133 | $_quote->delete();
134 | }
135 | }
136 |
137 | $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
138 | $productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
139 | $version = $productMetadata->getVersion();
140 | if (version_compare($version, '2.2.2') >= 0) {
141 | $contactCollection = $this->_contactFactory->create()->addFieldToFilter('email', $customerEmail);
142 |
143 | if(count($contactCollection)>0){
144 | foreach($contactCollection as $_contact){
145 | $_contact->delete();
146 | }
147 | }
148 | }
149 | $this->messageManager->addSuccess(__('We deleted your account.'));
150 |
151 | if ($this->getCookieManager()->getCookie('mage-cache-sessid')) {
152 | $metadata = $this->getCookieMetadataFactory()->createCookieMetadata();
153 | $metadata->setPath('/');
154 | $this->getCookieManager()->deleteCookie('mage-cache-sessid', $metadata);
155 | }
156 | }
157 | } catch (\Exception $e) {
158 | $this->messageManager->addError($e->getMessage());
159 | }
160 | }
161 |
162 | $this->_redirect('customer/account/login');
163 | }
164 | }
165 |
--------------------------------------------------------------------------------
/Controller/Index/Index.php:
--------------------------------------------------------------------------------
1 | _helper = $helper;
30 | }
31 |
32 | public function execute()
33 | {
34 | if ($this->getRequest()->isAjax()) {
35 | $this->_view->loadLayout();
36 | $identifier = $this->_helper->getConfigModule('cookie_restriction/identifier');
37 | $response = $this->_helper->getPageContent($identifier);
38 | if(!$response) $response = __('Page %1 not found or empty', $identifier);
39 | $this->getResponse()->setBody($response);
40 | }else {
41 | $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
42 | $resultRedirect->setUrl($this->_redirect->getRefererUrl());
43 | return $resultRedirect;
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Helper/Data.php:
--------------------------------------------------------------------------------
1 | storeManager = $storeManager;
43 | $this->_url = $url;
44 | $this->_pageFactory = $pageFactory;
45 | $this->_filterProvider = $filterProvider;
46 | parent::__construct($context);
47 | $this->configModule = $this->getConfig(strtolower($this->_getModuleName()));
48 | }
49 |
50 | public function getConfig($cfg='')
51 | {
52 | if($cfg) return $this->scopeConfig->getValue( $cfg, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );
53 | return $this->scopeConfig;
54 | }
55 |
56 | public function getConfigModule($cfg='', $value=null)
57 | {
58 | $values = $this->configModule;
59 | if( !$cfg ) return $values;
60 | $config = explode('/',(string) $cfg);
61 | $end = count($config) - 1;
62 | foreach ($config as $key => $vl) {
63 | if( isset($values[$vl]) ){
64 | if( $key == $end ) {
65 | $value = $values[$vl];
66 | }else {
67 | $values = $values[$vl];
68 | }
69 | }
70 |
71 | }
72 | return $value;
73 | }
74 |
75 | public function getUrlBuilder($identifier)
76 | {
77 | return $this->_url->getUrl($identifier);
78 | }
79 |
80 | public function getPageContent($identifier)
81 | {
82 | $page = $this->_pageFactory->create()->load($identifier);
83 | return $this->_filterProvider->getPageFilter()->filter($page->getContent());
84 | }
85 |
86 | }
--------------------------------------------------------------------------------
/Model/Config/Source/Align.php:
--------------------------------------------------------------------------------
1 | 'left', 'label' => __('Left')],
24 | ['value' => 'right', 'label' => __('Right')],
25 | ['value' => 'center', 'label' => __('Center')]
26 | ];
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Model/Config/Source/More.php:
--------------------------------------------------------------------------------
1 | 'not-show', 'label' => __('Not Show')],
24 | ['value' => 'link', 'label' => __('Show as link')],
25 | ['value' => 'popup', 'label' => __('Show as popup')]
26 | ];
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Model/Config/Source/Position.php:
--------------------------------------------------------------------------------
1 | 'left', 'label' => __('Left')],
24 | ['value' => 'right', 'label' => __('Right')]
25 | ];
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Model/Config/Source/Width.php:
--------------------------------------------------------------------------------
1 | 'full-width', 'label' => __('Full width')],
24 | ['value' => 'custom', 'label' => __('Custom')]
25 | ];
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Model/Contact.php:
--------------------------------------------------------------------------------
1 | _init('Magepow\Gdpr\Model\ResourceModel\Contact');
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Model/ResourceModel/Contact.php:
--------------------------------------------------------------------------------
1 | _init('email_contact', 'email_contact_id');
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Model/ResourceModel/Contact/Collection.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
19 | {
20 | /**
21 | * Init resource collection
22 | *
23 | * @return void
24 | */
25 | protected function _construct()
26 | {
27 | $this->_init('Magepow\Gdpr\Model\Contact', 'Magepow\Gdpr\Model\ResourceModel\Contact');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Observer/CheckUserCreateObserver.php:
--------------------------------------------------------------------------------
1 | _helper = $helper;
66 | $this->_actionFlag = $actionFlag;
67 | $this->messageManager = $messageManager;
68 | $this->_session = $session;
69 | $this->_urlManager = $urlManager;
70 | $this->redirect = $redirect;
71 | }
72 |
73 | /**
74 | * Check Captcha On User Login Page
75 | *
76 | * @param \Magento\Framework\Event\Observer $observer
77 | * @return $this
78 | */
79 | public function execute(\Magento\Framework\Event\Observer $observer)
80 | {
81 | if($this->_helper->getConfigModule('general/enabled')){
82 | $controller = $observer->getControllerAction();
83 | $data = $controller->getRequest()->getPost();
84 |
85 | if ($this->_helper->getConfigModule('register/active')
86 | && !isset($data['accept_gdpr'])) {
87 |
88 | $this->messageManager->addError(__('You do not agree with the storage and handling of your data by this website.'));
89 | $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
90 | $this->_session->setCustomerFormData($controller->getRequest()->getPostValue());
91 | $url = $this->_urlManager->getUrl('*/*/create', ['_nosecret' => true]);
92 | $controller->getResponse()->setRedirect($this->redirect->error($url));
93 |
94 | }
95 | }
96 | return;
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/Observer/CheckUserLoginObserver.php:
--------------------------------------------------------------------------------
1 | _helper = $helper;
62 | $this->_actionFlag = $actionFlag;
63 | $this->messageManager = $messageManager;
64 | $this->_session = $customerSession;
65 | $this->_customerUrl = $customerUrl;
66 | }
67 |
68 | /**
69 | * Check captcha on user login page
70 | *
71 | * @param \Magento\Framework\Event\Observer $observer
72 | * @throws NoSuchEntityException
73 | * @return $this
74 | */
75 | public function execute(\Magento\Framework\Event\Observer $observer)
76 | {
77 | if($this->_helper->getConfigModule('general/enabled')){
78 | $controller = $observer->getControllerAction();
79 | $loginParams = $controller->getRequest()->getPost('login');
80 |
81 | if ($this->_helper->getConfigModule('login/active')
82 | && !isset($loginParams['accept_gdpr'])) {
83 |
84 | $this->messageManager->addError(__('You do not agree with the storage and handling of your data by this website.'));
85 | $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
86 | $beforeUrl = $this->_session->getBeforeAuthUrl();
87 | $url = $beforeUrl ? $beforeUrl : $this->_customerUrl->getLoginUrl();
88 | $controller->getResponse()->setRedirect($url);
89 | }
90 | }
91 | return;
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://shopify.pxf.io/VyL446)
2 |
3 | ## Magento 2 GDPR extension FREE by Magepow
4 | When doing business in an online store, especially for companies reaching out to European Union customers, it is extremely important to ensure compliance with the GDPR - General Data Protection Regulation. The fines for companies that do not comply with GDPR now maximum up to 20 million EUR or 4% of global revenue annually.
5 | Supporting Magento websites to ensure compliance with GDPR regulations, Magepow develops Magento 2 GDPR extension Free that applies to all online stores. With outstanding features, the extension will help your website get consent from customers when accessing the site and avoid penalties.
6 | ### Who uses Magento 2 GDPR Free
7 | The EU GDPR regulation affects all websites that collect and use personal data from visitors coming from the EU, applicable to any type of online business (manufacturing company, company). Services, including 'all-cloud power'). The GDPR applies to organizations within the EU, as well as for companies located outside of the EU. As long as the company is processing EU data it is important to be sure to comply with the regulations.
8 | Magento 2 GDPR Free helps companies present more clearly and transparently to customers about how companies collect information and use their data, and how customers contact the company to exercise guest rights. Row.
9 | ### Features
10 | #### Make sure website complies with GDPR rules
11 | With Magento 2 GDPR Free, customers can optionally control personal data through the privacy policy, cookie, consent checkbox. Thereby, the company can collect information under the permission of customers, comply with GDPR regulations.
12 | #### Customers can manually delete accounts on Magento using the GDPR extension
13 | Customers can access and change account settings at any time to update information on the website. At the same time, the GDPR extension allows customers to easily delete their own accounts without having to contact the store owner.
14 | #### Supports cookies
15 | When a customer visits a website, a cookie window pops up allowing the customer to choose whether or not the website will collect access information. Cookies help improve the customer experience on the site better. However, in some cases, customers do not want to save their browser history, they may not allow them by disabling the cookies window.
16 | #### Privacy and contact policy
17 | GDPR extension allows customers to access privacy policy through the cookies window. Through these policies, the company can explain to customers what types of information the website collects, how to collect it, and how the website stores and protects the collected information. Users can contact the website owner if there is a policy problem.
18 | #### Agree checkbox
19 | The consent check box appears when a customer makes an account login or creates a new account on your website. Magento GDPR requires customers to click on the checkbox upon registration, which helps the website gather the consent of the customer to legalize the process of processing customer data. Similar to cookies, website owners can also easily customize how the checkbox is displayed accordingly.
20 | #### More features
21 | Enable/disable and customize the content of the cookies window and checkboxes
22 | Easy to configure admin panel, customer-friendly interface
23 | Allows activation/deactivation of extensions depending on country location
24 |
25 | ## How does GDPR extension work?
26 |
27 | - Detail Description: [Magento 2 GDPR](https://magepow.com/magento-2-gdpr.html)
28 |
29 | - [Doccumentation](https://docs.magepow.com/gdpr)
30 |
31 | - [DEMO FRONTEND](http://demo.magepow.com/gdpr/)
32 |
33 | - [DEMO BACKEND](http://demo.magepow.com/gdpr/admin)
34 |
35 | [](https://packagist.org/packages/magepow/gdpr)
36 | [](https://packagist.org/packages/magepow/gdpr)
37 | [](https://packagist.org/packages/magepow/gdpr)
38 |
39 | ### How to install Magento 2 GDPR Free
40 | #### ✓ Install Magepow GDPR Free via composer (recommend)
41 | Run the following command in Magento 2 root folder:
42 |
43 | ```
44 | composer require magepow/gdpr
45 | php bin/magento setup:upgrade
46 | php bin/magento setup:static-content:deploy -f
47 | ```
48 | ### Donation
49 |
50 | If this project help you reduce time to develop, you can give me a cup of coffee :)
51 |
52 | [](https://www.paypal.com/paypalme/alopay)
53 |
54 |
55 | **[Our Magento 2 Extensions](https://magepow.com/magento-2-extensions.html)**
56 |
57 | * [Magento 2 Recent Sales Notification](https://magepow.com/magento-2-recent-order-notification.html)
58 |
59 | * [Magento 2 Categories Extension](https://magepow.com/magento-categories-extension.html)
60 |
61 | * [Magento 2 Sticky Cart](https://magepow.com/magento-sticky-cart.html)
62 |
63 | * [Magento 2 Ajax Contact](https://magepow.com/magento-ajax-contact-form.html)
64 |
65 | * [Magento 2 Lazy Load](https://magepow.com/magento-lazy-load.html)
66 |
67 | * [Magento 2 Mutil Translate](https://magepow.com/magento-multi-translate.html)
68 |
69 | * [Magento 2 Instagram Integration](https://magepow.com/magento-2-instagram.html)
70 |
71 | * [Magento 2 Lookbook Pin Products](https://magepow.com/lookbook-pin-products.html)
72 |
73 | * [Magento 2 Product Slider](https://magepow.com/magento-product-slider.html)
74 |
75 | * [Magento 2 Product Banner](https://magepow.com/magento-2-banner-slider.html)
76 |
77 | **[Our Magento 2 services](https://magepow.com/magento-services.html)**
78 |
79 | * [PSD to Magento 2 Theme Conversion](https://alothemes.com/psd-to-magento-theme-conversion.html)
80 |
81 | * [Magento 2 Speed Optimization Service](https://magepow.com/magento-speed-optimization-service.html)
82 |
83 | * [Magento 2 Security Patch Installation](https://magepow.com/magento-security-patch-installation.html)
84 |
85 | * [Magento 2 Website Maintenance Service](https://magepow.com/website-maintenance-service.html)
86 |
87 | * [Magento 2 Professional Installation Service](https://magepow.com/professional-installation-service.html)
88 |
89 | * [Magento 2 Upgrade Service](https://magepow.com/magento-upgrade-service.html)
90 |
91 | * [Magento 2 Customization Service](https://magepow.com/customization-service.html)
92 |
93 | * [Hire Magento 2 Developer](https://magepow.com/hire-magento-developer.html)
94 |
95 | **[Our Magento 2 Themes](https://alothemes.com/)**
96 |
97 | * [Expert Multipurpose Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/expert-premium-responsive-magento-2-and-1-support-rtl-magento-2-/21667789)
98 |
99 | * [Gecko Premium Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/gecko-responsive-magento-2-theme-rtl-supported/24677410)
100 |
101 | * [Milano Fashion Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/milano-fashion-responsive-magento-1-2-theme/12141971)
102 |
103 | * [Electro 2 Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/electro2-premium-responsive-magento-2-rtl-supported/26875864)
104 |
105 | * [Electro Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/electro-responsive-magento-1-2-theme/17042067)
106 |
107 | * [Pizzaro Food responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/pizzaro-food-responsive-magento-1-2-theme/19438157)
108 |
109 | * [Biolife organic responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/biolife-organic-food-magento-2-theme-rtl-supported/25712510)
110 |
111 | * [Market responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/market-responsive-magento-2-theme/22997928)
112 |
113 | * [Kuteshop responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/kuteshop-multipurpose-responsive-magento-1-2-theme/12985435)
114 |
115 | * [Bencher - Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/bencher-responsive-magento-1-2-theme/15787772)
116 |
117 | * [Supermarket Responsive Magento 2 Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/supermarket-responsive-magento-1-2-theme/18447995)
118 |
119 | **[Our Shopify Themes](https://themeforest.net/user/alotheme)**
120 |
121 | * [Dukamarket - Multipurpose Shopify Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/dukamarket-multipurpose-shopify-theme/36158349)
122 |
123 | * [Ohey - Multipurpose Shopify Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/ohey-multipurpose-shopify-theme/34624195)
124 |
125 | * [Flexon - Multipurpose Shopify Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/flexon-multipurpose-shopify-theme/33461048)
126 |
127 | **[Our Shopify App](https://apps.shopify.com/partners/maggicart)**
128 |
129 | * [Magepow Infinite Scroll](https://apps.shopify.com/magepow-infinite-scroll)
130 |
131 | * [Magepow Promotionbar](https://apps.shopify.com/magepow-promotionbar)
132 |
133 | * [Magepow Size Chart](https://apps.shopify.com/magepow-size-chart)
134 |
135 | **[Our WordPress Theme](https://themeforest.net/user/alotheme/portfolio)**
136 |
137 | * [SadesMarket - Multipurpose WordPress Theme](https://1.envato.market/c/1314680/275988/4415?u=https://themeforest.net/item/sadesmarket-multipurpose-wordpress-theme/35369933)
138 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "magepow/gdpr",
3 | "description": "Magento 2 GDPR (General Data Protection Regulation)",
4 | "require": {
5 | "magepow/core": "^1.0.0"
6 | },
7 | "type": "magento2-module",
8 | "license": [
9 | "OSL-3.0",
10 | "AFL-3.0"
11 | ],
12 | "authors": [
13 | {
14 | "name": "Magepow",
15 | "email": "support@magepow.com",
16 | "homepage": "https://magepow.com",
17 | "role": "Technical Support"
18 | }
19 | ],
20 | "autoload": {
21 | "files": [
22 | "registration.php"
23 | ],
24 | "psr-4": {
25 | "Magepow\\Gdpr\\": ""
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/etc/acl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |