* Fix program priv.
This commit is contained in:
+16
-10
@@ -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();
|
||||
|
||||
@@ -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")));
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user