From dcda7afec1fa0a02c05f2ed91b65d119c39ddecd Mon Sep 17 00:00:00 2001 From: sunguangming Date: Tue, 26 Dec 2023 16:48:09 +0800 Subject: [PATCH] * instance: refactor install. --- module/instance/config/form.php | 10 ++++++++++ module/instance/control.php | 35 ++++++--------------------------- module/instance/zen.php | 24 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/module/instance/config/form.php b/module/instance/config/form.php index e2fba5e125..e18ad079a7 100644 --- a/module/instance/config/form.php +++ b/module/instance/config/form.php @@ -17,3 +17,13 @@ $config->instance->form->edit['account'] = array('type' => 'string', 'require $config->instance->form->edit['password'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim'); $config->instance->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => isset($app->user->account) ? $app->user->account : ''); $config->instance->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now()); + +$config->instance->form->install = array(); +$config->instance->form->install['storeAppType'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->instance->form->install['type'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->instance->form->install['customName'] = array('type' => 'string', 'required' => true, 'default' => ''); +$config->instance->form->install['customDomain'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->instance->form->install['version'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->instance->form->install['dbType'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->instance->form->install['dbService'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim'); +$config->instance->form->install['app_version'] = array('type' => 'string', 'required' => false, 'default' => ''); diff --git a/module/instance/control.php b/module/instance/control.php index 4e4517e788..b689722d61 100644 --- a/module/instance/control.php +++ b/module/instance/control.php @@ -535,34 +535,17 @@ class instance extends control { if(!commonModel::hasPriv('instance', 'manage')) $this->loadModel('common')->deny('instance', 'manage', false); $cloudApp = $this->store->getAppInfo($appID); - if(empty($cloudApp)) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->noAppInfo)); + if(empty($cloudApp)) return $this->send(array('result' => 'fail', 'load' => array('alert' => $this->lang->instance->errors->noAppInfo))); $versionList = $this->store->appVersionList($cloudApp->id); $mysqlList = $this->cne->sharedDBList('mysql'); $pgList = $this->cne->sharedDBList('postgresql'); if(!empty($_POST)) { - $customData = fixer::input('post') - ->trim('customName')->setDefault('customName', '') - ->trim('customDomain')->setDefault('customDomain', '') - ->trim('version')->setDefault('version', '') - ->trim('dbType')->setDefault('dbType', 'unsharedDB') - ->trim('dbService') - ->setDefault('app_version', '') - ->get(); + $customData = form::data($this->config->instance->form->install)->get(); if($customData->version && isset($versionList[$customData->version])) $customData->app_version = $versionList[$customData->version]->app_version; - if(isset($this->config->instance->keepDomainList[$customData->customDomain]) || $this->instance->domainExists($customData->customDomain)) return $this->send(array('result' => 'fail', 'message' => $customData->customDomain . $this->lang->instance->errors->domainExists)); - - if(!$customData->customName) - { - dao::$errors['customName'] = sprintf($this->lang->error->notempty, $this->lang->instance->name); - return $this->send(array('result' => 'fail', 'message' => dao::getError())); - } - if(!$this->instance->checkAppNameUnique($customData->customName)) return $this->send(array('result' => false, 'message' => array('customName' => sprintf($this->lang->error->repeat, $this->lang->instance->name, $customData->customName)))); - - if(!validater::checkLength($customData->customDomain, 20, 2)) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->domainLength)); - if(!validater::checkREG($customData->customDomain, '/^[a-z\d]+$/')) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->wrongDomainCharacter)); + $this->instanceZen->checkForInstall($customData); if($checkResource == 'true') { @@ -586,7 +569,7 @@ class instance extends control { $sharedDB = zget($mysqlList, $customData->dbService); } - elseif(isset($cloudApp->dependencies->postgresql) && $customData->dbType == 'sharedDB') + elseif(isset($cloudApp->dependencies->postgresql) && $customData->dbType == 'sharedDB') { $sharedDB = zget($pgList, $customData->dbService); } @@ -594,20 +577,14 @@ class instance extends control if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if(!$instance) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->notices['installFail'])); - unset($_GET['onlybody']); return $this->send(array('result' => 'success', 'message' => $this->lang->instance->notices['installSuccess'], 'load' => $this->createLink('instance', 'view', "id=$instance->id"), 'closeModal' => true)); } - $this->lang->switcherMenu = $this->instance->getInstallSwitcher($cloudApp); - - $this->view->position[] = $this->view->title; - - $this->view->title = $this->lang->instance->install . $cloudApp->alias; - $this->view->cloudApp = $cloudApp; - $this->view->versionList = array(); foreach($versionList as $version) $this->view->versionList[$version->version] = $version->app_version . " ({$version->version})"; + $this->view->title = $this->lang->instance->install . $cloudApp->alias; + $this->view->cloudApp = $cloudApp; $this->view->thirdDomain = $this->instance->randThirdDomain(); $this->view->mysqlList = $this->instance->dbListToOptions($mysqlList); $this->view->pgList = $this->instance->dbListToOptions($pgList); diff --git a/module/instance/zen.php b/module/instance/zen.php index 674eed1faa..09e37185c8 100644 --- a/module/instance/zen.php +++ b/module/instance/zen.php @@ -68,5 +68,29 @@ class instanceZen extends instance if(empty($this->loadModel('pipeline')->getByNameAndType($name . '-' . $times, $name))) return $name . '-' . $times; } } + + /** + * 检查安装应用时数据合法性 + * Check for install. + * + * @param object $customData + * @access public + * @return void + */ + protected function checkForInstall(object $customData) + { + if(isset($this->config->instance->keepDomainList[$customData->customDomain]) || $this->instance->domainExists($customData->customDomain)) return $this->send(array('result' => 'fail', 'message' => $customData->customDomain . $this->lang->instance->errors->domainExists)); + + if(!$customData->customName) + { + dao::$errors['customName'] = sprintf($this->lang->error->notempty, $this->lang->instance->name); + return $this->send(array('result' => 'fail', 'message' => dao::getError())); + } + + if(!$this->instance->checkAppNameUnique($customData->customName)) return $this->send(array('result' => false, 'message' => array('customName' => sprintf($this->lang->error->repeat, $this->lang->instance->name, $customData->customName)))); + + if(!validater::checkLength($customData->customDomain, 20, 2)) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->domainLength)); + if(!validater::checkREG($customData->customDomain, '/^[a-z\d]+$/')) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->wrongDomainCharacter)); + } }