From db90d56cb523633450c6e82d0d10dd3dd60aa366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Fri, 18 Aug 2023 17:42:29 +0900 Subject: [PATCH] shoppingmallv2 init... --- app/Controllers/Admin/UserController.php | 30 +++++----- app/Controllers/BaseController.php | 56 +++++++++---------- .../Front/Billing/CardController.php | 26 ++++++++- app/Helpers/Card_helper.php | 8 +-- 4 files changed, 68 insertions(+), 52 deletions(-) diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index f966272..6babdda 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -40,6 +40,19 @@ class UserController extends AdminController break; } } + protected function getFieldRule(string $field, array $rules, string $action = ""): array + { + switch ($field) { + case 'role': + //checkbox형태로 들어오면 $fieldDatas['role']가 array이기때문에 + $rules[$field . '.*'] = "required|in_list[master,director,cloudflare,manager,gold,silver,brone,vip,user]"; + break; + default: + $rules = parent::getFieldRule($field, $rules, $action); + break; + } + return $rules; + } public function getFieldFilters(): array { return ["role", "status"]; @@ -48,21 +61,4 @@ class UserController extends AdminController { return parent::getFieldBatchFilters(); } - - protected function insert_validate() - { - $rules = []; - foreach ($this->_viewDatas['fieldRules'] as $field => $rule) { - switch ($field) { - case 'role': - //checkbox형태로 들어오면 $fieldDatas['role']가 array이기때문에 - $rules[$field . '.*'] = $rule; - break; - default: - $rules[$field] = $rule; - break; - } - } - parent::insert_validate(); - } } diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index bc41848..7949bfb 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -47,6 +47,7 @@ abstract class BaseController extends Controller /** * Constructor. */ + private $_validation = null; protected $_model = null; protected $_session = null; protected $_viewPath = ''; @@ -58,6 +59,7 @@ abstract class BaseController extends Controller // Preload any models, libraries, etc, here. // E.g.: $this->session = \Config\Services::session(); $this->_session = \Config\Services::session(); + $this->_validation = \Config\Services::validation(); $this->_viewDatas['session'] = $this->_session; //사용자 기본 Role 지정 $this->_viewDatas[SESSION_NAMES['ISLOGIN']] = false; @@ -171,21 +173,16 @@ abstract class BaseController extends Controller } protected function insert_validate() { - //fieldData Rule 검사 - //추후 VersionUP용 - // $this->_model->getValidation($this->getFields()); - // if (! $this->_validation->run($user)) { - // throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - // } - //fieldData Rule 검사 - if (!$this->validate($this->_viewDatas['fieldRules'])) { - throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - } //fieldData 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field); } + + $this->_validation->setRules($this->_viewDatas['fieldRules']); + if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) { + throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors())); + } } protected function insert_process() { @@ -232,20 +229,17 @@ abstract class BaseController extends Controller } protected function update_validate($entity) { - //fieldData Rule 검사 - //추후 VersionUP용 - // $this->_model->getValidation($this->getFields()); - // if (! $this->_validation->run($user)) { - // throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - // } - if (!$this->validate($this->_viewDatas['fieldRules'])) { - throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - } //fieldData 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity); } + + $this->_validation->setRules($this->_viewDatas['fieldRules']); + if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) { + throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors())); + } + //변견된 데이터 Log로 남기기 foreach ($this->_viewDatas['fieldDatas'] as $field => $value) { if ($field != "passwd") { //보안위험성이 있으므로 passwd는 Log에 남기지 않는다. @@ -308,14 +302,16 @@ abstract class BaseController extends Controller } protected function reply_validate($entity) { - if (!$this->validate($this->_viewDatas['fieldRules'])) { - throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - } //fieldData 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity); } + + $this->_validation->setRules($this->_viewDatas['fieldRules']); + if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) { + throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors())); + } } protected function reply_process($entity) { @@ -344,14 +340,16 @@ abstract class BaseController extends Controller //Toggle 관련 protected function toggle_validate($entity) { - if (!$this->validate($this->_viewDatas['fieldRules'])) { - throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - } //fieldData 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity); } + + $this->_validation->setRules($this->_viewDatas['fieldRules']); + if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) { + throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors())); + } } protected function toggle_process($entity) { @@ -378,14 +376,16 @@ abstract class BaseController extends Controller //Batchjob 관련 protected function batchjob_validate($entity) { - if (!$this->validate($this->_viewDatas['fieldRules'])) { - throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors())); - } //fieldData 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { $this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity); } + + $this->_validation->setRules($this->_viewDatas['fieldRules']); + if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) { + throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors())); + } } protected function batchjob_process($entity) { diff --git a/app/Controllers/Front/Billing/CardController.php b/app/Controllers/Front/Billing/CardController.php index b2ed625..43ae465 100644 --- a/app/Controllers/Front/Billing/CardController.php +++ b/app/Controllers/Front/Billing/CardController.php @@ -40,16 +40,16 @@ class CardController extends BillingController $rules[$field] = 'required|in_list[00,01]'; break; case "card_number": - $rules[$field] = 'required|regex_match[/^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}/]'; + $rules[$field] = 'required|regex_match[/^[0-9]{4}[\/-][0-9]{4}[\/-][0-9]{4}[\/-][0-9]{4}/]'; break; case "card_expiration": - $rules[$field] = 'required|regex_match[/^[1-12]{2}-[0-9]{4}/]'; + $rules[$field] = 'required|regex_match[/^[0-9]{4}[\/-](0[0-9]|1[0-2])/]'; break; case "email": $rules[$field] = 'required|valid_email'; break; case "phone": - $rules[$field] = 'required|regex_match[/^[0-9]{3}-[0-9]{4}-[0-9]{4}/]'; + $rules[$field] = 'required|regex_match[/^[0-9]{3}[\/-][0-9]{4}[\/-][0-9]{4}/]'; break; default: $rules = parent::getFieldRule($field, $rules, $action); @@ -81,6 +81,25 @@ class CardController extends BillingController } return $options; } + //Field별 Form Datas 처리용 + protected function getFieldFormData(string $field, $entity = null): array + { + switch ($field) { + case 'card_number': + case 'card_expiration': + $temps = array(); + foreach ($this->request->getVar($field) as $value) { + array_push($temps, $value); + } + $this->_viewDatas['fieldDatas'][$field] = implode("-", $temps); + break; + default: + return parent::getFieldFormData($field, $entity); + break; + } + return $this->_viewDatas['fieldDatas']; + } + //Update관련 //카드결제처리 @@ -108,6 +127,7 @@ class CardController extends BillingController $this->_viewDatas['fieldDatas']["response"] = $this->pg_process(true); //Card 결제처리 $this->_viewDatas['fieldDatas']["type"] = $this->_viewDatas['className']; + $this->_viewDatas['fieldDatas']["status"] = DEFAULTS['STATUS']; return parent::update_process($entity); } } diff --git a/app/Helpers/Card_helper.php b/app/Helpers/Card_helper.php index c4668de..65c084d 100644 --- a/app/Helpers/Card_helper.php +++ b/app/Helpers/Card_helper.php @@ -30,16 +30,16 @@ function getFieldForm_CardHelper($field, $value, array $viewDatas, array $attrib ); break; case 'card_expiration': - $months = []; - for ($i = 1; $i <= 12; $i++) { - $months[$i] = "{$i}월"; - } $start = date('Y'); $end = date('Y', strtotime(date("Y") . ' + 10 year')); $years = []; for ($i = $start; $i <= $end; $i++) { $years[$i] = "{$i}년"; } + $months = []; + for ($i = 1; $i <= 12; $i++) { + $months[sprintf("%02d", $i)] = "{$i}월"; + } return form_dropdown("{$field}[]", $years, DEFAULTS['EMPTY']) . '/ ' . form_dropdown("{$field}[]", $months, DEFAULTS['EMPTY']); break;