* Fix program priv.

This commit is contained in:
sgm0422
2020-06-17 10:39:51 +08:00
parent 7af773d821
commit a90ceec8fd
3 changed files with 50 additions and 10 deletions
+16 -10
View File
@@ -183,15 +183,18 @@ class commonModel extends model
* @access public
* @return mixed
*/
public function deny($module, $method)
public function deny($module, $method, $reload = true)
{
/* Get authorize again. */
$user = $this->app->user;
$user->rights = $this->loadModel('user')->authorize($user->account);
$user->groups = $this->user->getGroups($user->account);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
if(commonModel::hasPriv($module, $method)) return true;
if($reload)
{
/* Get authorize again. */
$user = $this->app->user;
$user->rights = $this->loadModel('user')->authorize($user->account);
$user->groups = $this->user->getGroups($user->account);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
if(commonModel::hasPriv($module, $method)) return true;
}
$vars = "module=$module&method=$method";
if(isset($this->server->http_referer))
@@ -1549,7 +1552,11 @@ EOD;
$this->app->user = $this->session->user;
$inProgram = isset($this->lang->navGroup->$module) && $this->lang->navGroup->$module == 'program';
if(!defined('IN_UPGRADE') and $inProgram) $this->resetProgramPriv($module, $method);
if(!defined('IN_UPGRADE') and $inProgram)
{
$this->resetProgramPriv($module, $method);
if(!commonModel::hasPriv($module, $method)) $this->deny($module, $method, false);
}
if(!commonModel::hasPriv($module, $method)) $this->deny($module, $method);
}
@@ -1619,7 +1626,6 @@ EOD;
*/
public function resetProgramPriv($module, $method)
{
global $app;
/* Get user program priv. */
if(!$this->app->session->program) return;
$program = $this->dao->findByID($this->app->session->program)->from(TABLE_PROJECT)->fetch();
+1
View File
@@ -302,6 +302,7 @@ class upgrade extends control
if(empty($noMergedProductCount) and empty($noMergedProjectCount))
{
$this->upgrade->initUserView();
$this->upgrade->setDefaultPriv();
die(js::locate($this->createLink('upgrade', 'afterExec', "fromVersion=&processed=yes")));
}
+33
View File
@@ -3955,6 +3955,39 @@ class upgradeModel extends model
}
}
/**
* Set program default priv.
*
* @param string $fromVersion
* @access public
* @return void
*/
public function setDefaultPriv()
{
$groups = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->ne('limited')->andWhere('role')->ne('pgmadmin')->fetchPairs();
foreach($groups as $groupID)
{
$data = new stdclass();
$data->group = $groupID;
$data->module = 'program';
$data->method = 'index';
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
$data->method = 'transfer';
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
}
$pgmAdminGroupID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('pgmadmin')->fetch('id');
foreach($this->lang->resource->program as $method => $methodLang)
{
$data = new stdclass();
$data->group = $pgmAdminGroupID;
$data->module = 'program';
$data->method = $method;
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
}
}
/**
* Append execute for pro and biz.
*