* [misc] separate the methods that can be used by the unlogged users and the logged users.

This commit is contained in:
liugang
2024-07-01 16:22:59 +08:00
committed by 王于听
parent 254a410d54
commit a07f990927
5 changed files with 143 additions and 139 deletions
+7 -7
View File
@@ -142,7 +142,7 @@ class userEntry extends entry
case 'execution':
$info->execution = array('total' => 0, 'executions' => array());
if(!common::hasPriv('my', 'work')) break;
$this->config->openMethods[] = 'my.execution';
$this->config->logonMethods[] = 'my.execution';
$control = $this->loadController('my', 'execution');
$control->execution($this->param('type', 'undone'), $this->param('order', 'id_desc'), $this->param('total', 0), $this->param('limit', 5), $this->param('page', 1));
@@ -195,7 +195,7 @@ class userEntry extends entry
case 'task':
$info->task = array('total' => 0, 'tasks' => array());
if(!common::hasPriv('my', 'work')) break;
$this->config->openMethods[] = 'my.task';
$this->config->logonMethods[] = 'my.task';
global $app;
$app->rawMethod = 'work';
@@ -213,7 +213,7 @@ class userEntry extends entry
case 'bug':
$info->bug = array('total' => 0, 'bugs' => array());
if(!common::hasPriv('my', 'work')) break;
$this->config->openMethods[] = 'my.bug';
$this->config->logonMethods[] = 'my.bug';
global $app;
$app->rawMethod = 'work';
@@ -272,7 +272,7 @@ class userEntry extends entry
case 'story':
$info->story = array('total' => 0, 'stories' => array());
if(!common::hasPriv('my', 'work')) break;
$this->config->openMethods[] = 'my.story';
$this->config->logonMethods[] = 'my.story';
global $app;
$app->rawMethod = 'work';
@@ -302,7 +302,7 @@ class userEntry extends entry
{
global $app;
$app->rawMethod = 'work';
$this->config->openMethods[] = 'my.issue';
$this->config->logonMethods[] = 'my.issue';
$control = $this->loadController('my', 'issue');
$control->issue('createdBy', 0, 'id_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
@@ -322,7 +322,7 @@ class userEntry extends entry
{
global $app;
$app->rawMethod = 'work';
$this->config->openMethods[] = 'my.risk';
$this->config->logonMethods[] = 'my.risk';
$control = $this->loadController('my', 'risk');
$control->risk('assignedTo', 0, 'id_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
@@ -342,7 +342,7 @@ class userEntry extends entry
{
global $app;
$app->rawMethod = 'work';
$this->config->openMethods[] = 'my.myMeeting';
$this->config->logonMethods[] = 'my.myMeeting';
$control = $this->loadController('my', 'myMeeting');
$control->myMeeting('futureMeeting', '', 'id_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
+127 -126
View File
@@ -204,147 +204,148 @@ $config->charsets['es']['GBK'] = 'GBK';
$config->charsets['pt']['utf-8'] = 'UTF-8';
$config->charsets['pt']['GBK'] = 'GBK';
if(!isset($config->openMethods)) $config->openMethods = array();
$config->openMethods[] = 'action.commentzin';
$config->openMethods[] = 'action.editcommentzin';
$config->openMethods[] = 'action.restorestages';
$config->openMethods[] = 'admin.ignore';
$config->openMethods[] = 'ai.adminindex';
/* 未登录用户可以使用的方法。The methods that can be used by the unlogged users. */
$config->openMethods = array();
$config->openMethods[] = 'api.getsessionid';
$config->openMethods[] = 'caselib.index';
$config->openMethods[] = 'company.index';
$config->openMethods[] = 'cron.consume';
$config->openMethods[] = 'cron.schedule';
$config->openMethods[] = 'custom.index';
$config->openMethods[] = 'doc.createbasicinfo';
$config->openMethods[] = 'doc.selectlibtype';
$config->openMethods[] = 'doc.uploaddocs';
$config->openMethods[] = 'execution.browse';
$config->openMethods[] = 'feedback.mergeproductmodule';
$config->openMethods[] = 'file.buildoldform';
$config->openMethods[] = 'file.read';
$config->openMethods[] = 'gitea.binduser';
$config->openMethods[] = 'gitea.create';
$config->openMethods[] = 'gitea.edit';
$config->openMethods[] = 'gitlab.binduser';
$config->openMethods[] = 'gitlab.browsebranch';
$config->openMethods[] = 'gitlab.browsegroup';
$config->openMethods[] = 'gitlab.browseproject';
$config->openMethods[] = 'gitlab.browsetag';
$config->openMethods[] = 'gitlab.browseuser';
$config->openMethods[] = 'gitlab.create';
$config->openMethods[] = 'gitlab.createbranch';
$config->openMethods[] = 'gitlab.creategroup';
$config->openMethods[] = 'gitlab.createproject';
$config->openMethods[] = 'gitlab.createtag';
$config->openMethods[] = 'gitlab.createuser';
$config->openMethods[] = 'gitlab.createwebhook';
$config->openMethods[] = 'gitlab.deletegroup';
$config->openMethods[] = 'gitlab.deleteproject';
$config->openMethods[] = 'gitlab.deletetag';
$config->openMethods[] = 'gitlab.deleteuser';
$config->openMethods[] = 'gitlab.edit';
$config->openMethods[] = 'gitlab.editgroup';
$config->openMethods[] = 'gitlab.editproject';
$config->openMethods[] = 'gitlab.edituser';
$config->openMethods[] = 'gitlab.importissue';
$config->openMethods[] = 'gitlab.managebranchpriv';
$config->openMethods[] = 'gitlab.managegroupmembers';
$config->openMethods[] = 'gitlab.manageprojectmembers';
$config->openMethods[] = 'gitlab.managetagpriv';
$config->openMethods[] = 'gitlab.webhook';
$config->openMethods[] = 'gitlab.webhook';
$config->openMethods[] = 'gogs.binduser';
$config->openMethods[] = 'gogs.create';
$config->openMethods[] = 'gogs.edit';
$config->openMethods[] = 'index.app';
$config->openMethods[] = 'index.changelog';
$config->openMethods[] = 'instance.ajaxdbauthurl';
$config->openMethods[] = 'instance.ajaxstart';
$config->openMethods[] = 'instance.ajaxstatus';
$config->openMethods[] = 'instance.ajaxstop';
$config->openMethods[] = 'instance.ajaxuninstall';
$config->openMethods[] = 'instance.binduser';
$config->openMethods[] = 'instance.createexternalapp';
$config->openMethods[] = 'instance.deleteexternalapp';
$config->openMethods[] = 'instance.edit';
$config->openMethods[] = 'instance.editexternalapp';
$config->openMethods[] = 'instance.install';
$config->openMethods[] = 'instance.setting';
$config->openMethods[] = 'instance.upgrade';
$config->openMethods[] = 'instance.view';
$config->openMethods[] = 'instance.visit';
$config->openMethods[] = 'jenkins.create';
$config->openMethods[] = 'jenkins.edit';
$config->openMethods[] = 'kanban.activatecard';
$config->openMethods[] = 'kanban.deleteobjectcard';
$config->openMethods[] = 'kanban.finishcard';
$config->openMethods[] = 'kanban.importbuild';
$config->openMethods[] = 'kanban.importcard';
$config->openMethods[] = 'kanban.importexecution';
$config->openMethods[] = 'kanban.importplan';
$config->openMethods[] = 'kanban.importrelease';
$config->openMethods[] = 'kanban.importticket';
$config->openMethods[] = 'metric.recalculatesetting';
$config->openMethods[] = 'misc.about';
$config->openMethods[] = 'misc.captcha';
$config->openMethods[] = 'misc.checknetconnect';
$config->openMethods[] = 'misc.checktable';
$config->openMethods[] = 'misc.checkupdate';
$config->openMethods[] = 'misc.features';
$config->openMethods[] = 'misc.getremind';
$config->openMethods[] = 'misc.ping';
$config->openMethods[] = 'misc.qrcode';
$config->openMethods[] = 'my.changepassword';
$config->openMethods[] = 'my.preference';
$config->openMethods[] = 'my.profile';
$config->openMethods[] = 'my.settutorialconfig';
$config->openMethods[] = 'personnel.unbindwhitelist';
$config->openMethods[] = 'project.createguide';
$config->openMethods[] = 'search.buildzinform';
$config->openMethods[] = 'search.buildzinquery';
$config->openMethods[] = 'search.deletezinquery';
$config->openMethods[] = 'search.savezinquery';
$config->openMethods[] = 'sonarqube.browseissue';
$config->openMethods[] = 'sonarqube.browseproject';
$config->openMethods[] = 'sonarqube.create';
$config->openMethods[] = 'sonarqube.createproject';
$config->openMethods[] = 'sonarqube.deleteproject';
$config->openMethods[] = 'sonarqube.edit';
$config->openMethods[] = 'sonarqube.execjob';
$config->openMethods[] = 'sonarqube.reportview';
$config->openMethods[] = 'space.binduser';
$config->openMethods[] = 'space.createapplication';
$config->openMethods[] = 'space.edit';
$config->openMethods[] = 'space.getstoreappinfo';
$config->openMethods[] = 'sso.bind';
$config->openMethods[] = 'sso.feishuauthen';
$config->openMethods[] = 'sso.feishulogin';
$config->openMethods[] = 'sso.getfeishusso';
$config->openMethods[] = 'sso.gettodolist';
$config->openMethods[] = 'sso.login';
$config->openMethods[] = 'sso.logout';
$config->openMethods[] = 'store.appview';
$config->openMethods[] = 'store.browse';
$config->openMethods[] = 'story.storyview';
$config->openMethods[] = 'system.editdomain';
$config->openMethods[] = 'task.editteam';
$config->openMethods[] = 'testcase.getxmindimport';
$config->openMethods[] = 'testcase.savexmindimport';
$config->openMethods[] = 'testcase.showimport';
$config->openMethods[] = 'testcase.showxmindimport';
$config->openMethods[] = 'testsuite.index';
$config->openMethods[] = 'tree.viewhistory';
$config->openMethods[] = 'upgrade.ajaxupdatefile';
$config->openMethods[] = 'user.cropavatar';
$config->openMethods[] = 'user.deny';
$config->openMethods[] = 'user.forgetpassword';
$config->openMethods[] = 'user.login';
$config->openMethods[] = 'user.logout';
$config->openMethods[] = 'user.refreshrandom';
$config->openMethods[] = 'user.reset';
$config->openMethods[] = 'user.resetpassword';
$config->openMethods[] = 'zanode.nodelist';
/* 登录用户可以使用的方法。The methods that can be used by the logged users. */
$config->logonMethods = array();
$config->logonMethods[] = 'action.commentzin';
$config->logonMethods[] = 'action.editcommentzin';
$config->logonMethods[] = 'action.restorestages';
$config->logonMethods[] = 'admin.ignore';
$config->logonMethods[] = 'ai.adminindex';
$config->logonMethods[] = 'caselib.index';
$config->logonMethods[] = 'company.index';
$config->logonMethods[] = 'cron.consume';
$config->logonMethods[] = 'cron.schedule';
$config->logonMethods[] = 'custom.index';
$config->logonMethods[] = 'doc.createbasicinfo';
$config->logonMethods[] = 'doc.selectlibtype';
$config->logonMethods[] = 'doc.uploaddocs';
$config->logonMethods[] = 'execution.browse';
$config->logonMethods[] = 'feedback.mergeproductmodule';
$config->logonMethods[] = 'file.buildoldform';
$config->logonMethods[] = 'file.read';
$config->logonMethods[] = 'gitea.binduser';
$config->logonMethods[] = 'gitea.create';
$config->logonMethods[] = 'gitea.edit';
$config->logonMethods[] = 'gitlab.binduser';
$config->logonMethods[] = 'gitlab.browsebranch';
$config->logonMethods[] = 'gitlab.browsegroup';
$config->logonMethods[] = 'gitlab.browseproject';
$config->logonMethods[] = 'gitlab.browsetag';
$config->logonMethods[] = 'gitlab.browseuser';
$config->logonMethods[] = 'gitlab.create';
$config->logonMethods[] = 'gitlab.createbranch';
$config->logonMethods[] = 'gitlab.creategroup';
$config->logonMethods[] = 'gitlab.createproject';
$config->logonMethods[] = 'gitlab.createtag';
$config->logonMethods[] = 'gitlab.createuser';
$config->logonMethods[] = 'gitlab.createwebhook';
$config->logonMethods[] = 'gitlab.deletegroup';
$config->logonMethods[] = 'gitlab.deleteproject';
$config->logonMethods[] = 'gitlab.deletetag';
$config->logonMethods[] = 'gitlab.deleteuser';
$config->logonMethods[] = 'gitlab.edit';
$config->logonMethods[] = 'gitlab.editgroup';
$config->logonMethods[] = 'gitlab.editproject';
$config->logonMethods[] = 'gitlab.edituser';
$config->logonMethods[] = 'gitlab.importissue';
$config->logonMethods[] = 'gitlab.managebranchpriv';
$config->logonMethods[] = 'gitlab.managegroupmembers';
$config->logonMethods[] = 'gitlab.manageprojectmembers';
$config->logonMethods[] = 'gitlab.managetagpriv';
$config->logonMethods[] = 'gitlab.webhook';
$config->logonMethods[] = 'gitlab.webhook';
$config->logonMethods[] = 'gogs.binduser';
$config->logonMethods[] = 'gogs.create';
$config->logonMethods[] = 'gogs.edit';
$config->logonMethods[] = 'index.app';
$config->logonMethods[] = 'index.changelog';
$config->logonMethods[] = 'instance.ajaxdbauthurl';
$config->logonMethods[] = 'instance.ajaxstart';
$config->logonMethods[] = 'instance.ajaxstatus';
$config->logonMethods[] = 'instance.ajaxstop';
$config->logonMethods[] = 'instance.ajaxuninstall';
$config->logonMethods[] = 'instance.binduser';
$config->logonMethods[] = 'instance.createexternalapp';
$config->logonMethods[] = 'instance.deleteexternalapp';
$config->logonMethods[] = 'instance.edit';
$config->logonMethods[] = 'instance.editexternalapp';
$config->logonMethods[] = 'instance.install';
$config->logonMethods[] = 'instance.setting';
$config->logonMethods[] = 'instance.upgrade';
$config->logonMethods[] = 'instance.view';
$config->logonMethods[] = 'instance.visit';
$config->logonMethods[] = 'jenkins.create';
$config->logonMethods[] = 'jenkins.edit';
$config->logonMethods[] = 'kanban.activatecard';
$config->logonMethods[] = 'kanban.deleteobjectcard';
$config->logonMethods[] = 'kanban.finishcard';
$config->logonMethods[] = 'kanban.importbuild';
$config->logonMethods[] = 'kanban.importcard';
$config->logonMethods[] = 'kanban.importexecution';
$config->logonMethods[] = 'kanban.importplan';
$config->logonMethods[] = 'kanban.importrelease';
$config->logonMethods[] = 'kanban.importticket';
$config->logonMethods[] = 'metric.recalculatesetting';
$config->logonMethods[] = 'misc.about';
$config->logonMethods[] = 'misc.features';
$config->logonMethods[] = 'misc.ping';
$config->logonMethods[] = 'misc.qrcode';
$config->logonMethods[] = 'my.changepassword';
$config->logonMethods[] = 'my.preference';
$config->logonMethods[] = 'my.profile';
$config->logonMethods[] = 'my.settutorialconfig';
$config->logonMethods[] = 'personnel.unbindwhitelist';
$config->logonMethods[] = 'project.createguide';
$config->logonMethods[] = 'search.buildzinform';
$config->logonMethods[] = 'search.buildzinquery';
$config->logonMethods[] = 'search.deletezinquery';
$config->logonMethods[] = 'search.savezinquery';
$config->logonMethods[] = 'sonarqube.browseissue';
$config->logonMethods[] = 'sonarqube.browseproject';
$config->logonMethods[] = 'sonarqube.create';
$config->logonMethods[] = 'sonarqube.createproject';
$config->logonMethods[] = 'sonarqube.deleteproject';
$config->logonMethods[] = 'sonarqube.edit';
$config->logonMethods[] = 'sonarqube.execjob';
$config->logonMethods[] = 'sonarqube.reportview';
$config->logonMethods[] = 'space.binduser';
$config->logonMethods[] = 'space.createapplication';
$config->logonMethods[] = 'space.edit';
$config->logonMethods[] = 'space.getstoreappinfo';
$config->logonMethods[] = 'sso.gettodolist';
$config->logonMethods[] = 'store.appview';
$config->logonMethods[] = 'store.browse';
$config->logonMethods[] = 'story.storyview';
$config->logonMethods[] = 'system.editdomain';
$config->logonMethods[] = 'task.editteam';
$config->logonMethods[] = 'testcase.getxmindimport';
$config->logonMethods[] = 'testcase.savexmindimport';
$config->logonMethods[] = 'testcase.showimport';
$config->logonMethods[] = 'testcase.showxmindimport';
$config->logonMethods[] = 'testsuite.index';
$config->logonMethods[] = 'tree.viewhistory';
$config->logonMethods[] = 'user.cropavatar';
$config->logonMethods[] = 'user.deny';
$config->logonMethods[] = 'user.logout';
$config->logonMethods[] = 'zanode.nodelist';
$config->openModules = array();
$config->openModules[] = 'install';
+3 -3
View File
@@ -1,4 +1,4 @@
<?php
$config->openMethods[] = 'setting.downloadxxd';
$config->openMethods[] = 'file.uploadchatavatar';
$config->openMethods[] = 'integration.wopi';
$config->logonMethods[] = 'setting.downloadxxd';
$config->logonMethods[] = 'file.uploadchatavatar';
$config->logonMethods[] = 'integration.wopi';
+5 -2
View File
@@ -445,6 +445,8 @@ class commonModel extends model
if($this->loadModel('user')->isLogon() or ($this->app->company->guest and $this->app->user->account == 'guest'))
{
if(in_array("$module.$method", $this->config->logonMethods)) return true;
if(stripos($method, 'ajax') !== false) return true;
if($module == 'block' && stripos(',dashboard,printblock,create,edit,delete,close,reset,layout,', ",{$method},") !== false) return true;
if($module == 'index' and $method == 'app') return true;
@@ -1352,6 +1354,7 @@ eof;
/* Check the method is openMethod. */
if(in_array("$module.$method", $app->config->openMethods)) return true;
if(in_array("$module.$method", $app->config->logonMethods)) return true;
/* If is the program/project/product/execution admin, have all program privileges. */
if($app->config->vision != 'lite' && commonTao::isProjectAdmin($module)) return true;
@@ -2715,7 +2718,7 @@ eof;
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
$currentModule = strtolower($module);
$currentMethod = strtolower($method);
if(!commonModel::hasPriv($module, $method, $object, $vars) and !in_array("$currentModule.$currentMethod", $config->openMethods)) return false;
if(!commonModel::hasPriv($module, $method, $object, $vars) && !in_array("$currentModule.$currentMethod", $config->openMethods) && !in_array("$currentModule.$currentMethod", $config->logonMethods)) return false;
$link = helper::createLink($module, $method, $vars, '', $onlyBody ? true : false);
@@ -3574,7 +3577,7 @@ eof;
$currentMethod = strtolower($method);
if(strpos($misc, 'data-app') === false) $misc .= ' data-app="' . $app->tab . '"';
if(!commonModel::hasPriv($module, $method, $object, $vars) and !in_array("$currentModule.$currentMethod", $config->openMethods)) return false;
if(!commonModel::hasPriv($module, $method, $object, $vars) && !in_array("$currentModule.$currentMethod", $config->openMethods) && !in_array("$currentModule.$currentMethod", $config->logonMethods)) return false;
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
return true;
}
+1 -1
View File
@@ -59,7 +59,7 @@ if(empty($config->repo->maintain->showRepoPath))
}
/* Set 'repo-visit' action as one open method, so any user can use it. */
if(empty($config->repo->maintain->disableVisit)) $config->openMethods[] = 'repo.visit';
if(empty($config->repo->maintain->disableVisit)) $config->logonMethods[] = 'repo.visit';
$repos = initTableData($repoList, $config->repo->dtable->fieldList, $this->repo);
$queryMenuLink = createLink('repo', 'maintain', "objectID=$objectID&orderBy=&recTotal={$pager->recTotal}&pageID={$pager->pageID}&type=bySearch&param={queryID}");