From 867e553946f6d2ac35b3d8ce2c5f12ab165e0a95 Mon Sep 17 00:00:00 2001 From: "kai.t" Date: Thu, 16 May 2024 09:08:45 +0700 Subject: [PATCH] init module --- .../IpSupply/SyncOrder/Api/Repository.php | 86 +++++++++++++++++++ .../SyncOrder/Api/RepositoryInterface.php | 23 +++++ .../SyncOrder/Block/Adminhtml/Config.php | 29 +++++++ .../Controller/Adminhtml/Config/Index.php | 27 ++++++ app/code/IpSupply/SyncOrder/Helper.php | 7 ++ .../IpSupply/SyncOrder/etc/adminhtml/menu.xml | 32 +++++++ .../SyncOrder/etc/adminhtml/routes.xml | 11 +++ app/code/IpSupply/SyncOrder/etc/module.xml | 4 + app/code/IpSupply/SyncOrder/etc/webapi.xml | 15 ++++ app/code/IpSupply/SyncOrder/registration.php | 6 ++ .../layout/syncorder_config_index.xml | 14 +++ .../templates/syncorder_config.phtml | 0 .../view/adminhtml/web/css/config.css | 0 13 files changed, 254 insertions(+) create mode 100755 app/code/IpSupply/SyncOrder/Api/Repository.php create mode 100755 app/code/IpSupply/SyncOrder/Api/RepositoryInterface.php create mode 100755 app/code/IpSupply/SyncOrder/Block/Adminhtml/Config.php create mode 100755 app/code/IpSupply/SyncOrder/Controller/Adminhtml/Config/Index.php create mode 100755 app/code/IpSupply/SyncOrder/Helper.php create mode 100755 app/code/IpSupply/SyncOrder/etc/adminhtml/menu.xml create mode 100755 app/code/IpSupply/SyncOrder/etc/adminhtml/routes.xml create mode 100755 app/code/IpSupply/SyncOrder/etc/module.xml create mode 100755 app/code/IpSupply/SyncOrder/etc/webapi.xml create mode 100755 app/code/IpSupply/SyncOrder/registration.php create mode 100755 app/code/IpSupply/SyncOrder/view/adminhtml/layout/syncorder_config_index.xml create mode 100755 app/code/IpSupply/SyncOrder/view/adminhtml/templates/syncorder_config.phtml create mode 100755 app/code/IpSupply/SyncOrder/view/adminhtml/web/css/config.css diff --git a/app/code/IpSupply/SyncOrder/Api/Repository.php b/app/code/IpSupply/SyncOrder/Api/Repository.php new file mode 100755 index 00000000..1dc1f84b --- /dev/null +++ b/app/code/IpSupply/SyncOrder/Api/Repository.php @@ -0,0 +1,86 @@ +authorization(); + } + + private function authorization() + { + $headers = apache_request_headers(); + $apiKey = \IpSupply\SyncOrder\Helper::API_KEY; + + foreach ($headers as $key => $value) { + $key = strtolower($key); + if ('api_key' === $key && $value === $apiKey) { + return true; + } + } + + header('HTTP/1.1 401 Unauthorized'); + header('Accept: application/json'); + header('Content-Type: application/json'); + die(json_encode(['message' => 'unauthorized'])); + } + + private function _responseOk(array $data) + { + header('HTTP/1.1 200 Ok'); + header('Accept: application/json'); + header('Content-Type: application/json'); + die(json_encode($data)); + } + + private function _responseFail(array $data) + { + header('HTTP/1.1 400 Bad request'); + header('Accept: application/json'); + header('Content-Type: application/json'); + die(json_encode($data)); + } + + private function _responseMethodFail() + { + header('HTTP/1.1 400 bad request'); + header('Accept: application/json'); + header('Content-Type: application/json'); + die(json_encode([ + 'status' => false, + 'message' => 'Param ?method=... not exist!' + ])); + } + + public function getData() + { + return $this->_responseOk([ + 'status' => true, + 'data' => [] + ]); + // return $this->_responseMethodFail(); + } + + public function postData() + { + parse_str( + string: file_get_contents('php://input'), + result: $payload + ); + + return $this->_responseOk([ + 'status' => true, + 'data' => [], // TODO + 'payload' => $payload + ]); + + // return $this->_responseMethodFail(); + } +} diff --git a/app/code/IpSupply/SyncOrder/Api/RepositoryInterface.php b/app/code/IpSupply/SyncOrder/Api/RepositoryInterface.php new file mode 100755 index 00000000..52a740cb --- /dev/null +++ b/app/code/IpSupply/SyncOrder/Api/RepositoryInterface.php @@ -0,0 +1,23 @@ +urlInterface = $urlInterface; + parent::__construct($context, $data); + } + + public function getSecretKey() + { + return $this->urlInterface->getSecretKey(); + } + + public function getApiKey() + { + return \IpSupply\SyncOrder\Helper::API_KEY; + } +} diff --git a/app/code/IpSupply/SyncOrder/Controller/Adminhtml/Config/Index.php b/app/code/IpSupply/SyncOrder/Controller/Adminhtml/Config/Index.php new file mode 100755 index 00000000..1cb7d5c0 --- /dev/null +++ b/app/code/IpSupply/SyncOrder/Controller/Adminhtml/Config/Index.php @@ -0,0 +1,27 @@ +resultPageFactory = $resultPageFactory; + } + public function execute() + { + $resultPage = $this->resultPageFactory->create(); + $resultPage->setActiveMenu('IpSupply_SyncOrder::menu'); + $resultPage->getConfig()->getTitle()->prepend(__('IpSupply | Sync Order')); + return $resultPage; + } + protected function _isAllowed() + { + return $this->_authorization->isAllowed('IpSupply_SyncOrder::config'); + } +} diff --git a/app/code/IpSupply/SyncOrder/Helper.php b/app/code/IpSupply/SyncOrder/Helper.php new file mode 100755 index 00000000..e33c96df --- /dev/null +++ b/app/code/IpSupply/SyncOrder/Helper.php @@ -0,0 +1,7 @@ + + + + + + + + diff --git a/app/code/IpSupply/SyncOrder/etc/adminhtml/routes.xml b/app/code/IpSupply/SyncOrder/etc/adminhtml/routes.xml new file mode 100755 index 00000000..3d343d7f --- /dev/null +++ b/app/code/IpSupply/SyncOrder/etc/adminhtml/routes.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/code/IpSupply/SyncOrder/etc/module.xml b/app/code/IpSupply/SyncOrder/etc/module.xml new file mode 100755 index 00000000..24da24b0 --- /dev/null +++ b/app/code/IpSupply/SyncOrder/etc/module.xml @@ -0,0 +1,4 @@ + + + + diff --git a/app/code/IpSupply/SyncOrder/etc/webapi.xml b/app/code/IpSupply/SyncOrder/etc/webapi.xml new file mode 100755 index 00000000..ff2976a2 --- /dev/null +++ b/app/code/IpSupply/SyncOrder/etc/webapi.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/app/code/IpSupply/SyncOrder/registration.php b/app/code/IpSupply/SyncOrder/registration.php new file mode 100755 index 00000000..d4fa4b75 --- /dev/null +++ b/app/code/IpSupply/SyncOrder/registration.php @@ -0,0 +1,6 @@ + + + + + + + + + + + + diff --git a/app/code/IpSupply/SyncOrder/view/adminhtml/templates/syncorder_config.phtml b/app/code/IpSupply/SyncOrder/view/adminhtml/templates/syncorder_config.phtml new file mode 100755 index 00000000..e69de29b diff --git a/app/code/IpSupply/SyncOrder/view/adminhtml/web/css/config.css b/app/code/IpSupply/SyncOrder/view/adminhtml/web/css/config.css new file mode 100755 index 00000000..e69de29b