diff --git a/config/zentaopms.php b/config/zentaopms.php index 35548a8986..aac06dcc4f 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -239,6 +239,7 @@ $config->openMethods[] = 'custom.index'; $config->openMethods[] = 'testcase.getxmindimport'; $config->openMethods[] = 'testcase.showxmindimport'; $config->openMethods[] = 'testcase.savexmindimport'; +$config->openMethods[] = 'ai.adminindex'; $config->openModules = array(); $config->openModules[] = 'install'; diff --git a/module/admin/config.php b/module/admin/config.php index 47bf52e7e2..a23ec39ad8 100755 --- a/module/admin/config.php +++ b/module/admin/config.php @@ -15,7 +15,7 @@ $config->admin->menuGroup['message'] = array('mail', 'webhook', 'sms', 'messag $config->admin->menuGroup['dev'] = array('dev', 'entry', 'editor'); $config->admin->menuGroup['extension'] = array('extension'); $config->admin->menuGroup['convert'] = array('convert'); -$config->admin->menuGroup['ai'] = array('ai|prompts', 'ai|promptview', 'ai|conversations', 'ai|models', 'ai|editmodel', 'ai|promptassignrole', 'ai|promptselectdatasource', 'ai|promptsetpurpose', 'ai|promptsettargetform', 'ai|promptfinalize', 'ai|promptedit'); +$config->admin->menuGroup['ai'] = array('ai|adminindex', 'ai|prompts', 'ai|promptview', 'ai|conversations', 'ai|models', 'ai|editmodel', 'ai|promptassignrole', 'ai|promptselectdatasource', 'ai|promptsetpurpose', 'ai|promptsettargetform', 'ai|promptfinalize', 'ai|promptedit'); $config->admin->menuModuleGroup['model']['custom|set'] = array('project', 'issue', 'risk', 'opportunity', 'nc'); $config->admin->menuModuleGroup['model']['custom|required'] = array('project', 'build'); diff --git a/module/admin/lang/menu.php b/module/admin/lang/menu.php index ada1653447..ef57af82c0 100644 --- a/module/admin/lang/menu.php +++ b/module/admin/lang/menu.php @@ -46,7 +46,7 @@ $lang->admin->menuList->convert['order'] = 50; $lang->admin->menuList->ai['name'] = $lang->admin->menuSetting['ai']['name']; $lang->admin->menuList->ai['desc'] = $lang->admin->menuSetting['ai']['desc']; -$lang->admin->menuList->ai['link'] = 'ai|models'; +$lang->admin->menuList->ai['link'] = 'ai|adminindex'; $lang->admin->menuList->ai['order'] = 55; $lang->admin->menuList->system['subMenu']['mode'] = array('link' => "{$lang->custom->mode}|custom|mode|"); diff --git a/module/ai/control.php b/module/ai/control.php index 7cce11cf24..cd2162aaa5 100644 --- a/module/ai/control.php +++ b/module/ai/control.php @@ -16,6 +16,33 @@ class ai extends control $this->loadModel('user'); } + /** + * Check for user's privs and model configs, redirect to most relevant page. + * + * @access public + * @return void + */ + public function adminIndex() + { + $modelConfig = new stdclass(); + $modelConfigData = $this->loadModel('setting')->getItems('owner=system&module=ai'); + foreach($modelConfigData as $item) $modelConfig->{$item->key} = $item->value; + + $modelConfigured = !empty($modelConfig->key) && !empty($modelConfig->type) && (empty($modelConfig->proxyType) || !empty($modelConfig->proxyAddr)); + + /* Redirect to model edit if user has priv and model is unconfigured. */ + if(commonModel::hasPriv('ai', 'editModel') && !$modelConfigured) return $this->locate($this->createLink('ai', 'editModel')); + + /* Redirect to prompts if user has priv. */ + if(commonModel::hasPriv('ai', 'prompts')) return $this->locate($this->createLink('ai', 'prompts')); + + /* Redirect to models if user has priv. */ + if(commonModel::hasPriv('ai', 'models')) return $this->locate($this->createLink('ai', 'models')); + + /* User has no priv, deny access. */ + return $this->send(array('result' => 'fail', 'message' => $this->lang->error->accessDenied, 'locate' => $this->createLink('admin', 'index'))); + } + /** * List models. *