* Refactor group: format functions, remove unused functions.
This commit is contained in:
+16
-613
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The control file of group module of ZenTaoPMS.
|
||||
*
|
||||
@@ -12,12 +13,15 @@
|
||||
class group extends control
|
||||
{
|
||||
/**
|
||||
* 构造方法,将所有resource追加到package里。
|
||||
* Construct function.
|
||||
*
|
||||
* @param $moduleName
|
||||
* @param $methodName
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($moduleName = '', $methodName = '')
|
||||
public function __construct(string $moduleName = '', string $methodName = '')
|
||||
{
|
||||
parent::__construct($moduleName, $methodName);
|
||||
$this->loadModel('user');
|
||||
@@ -25,71 +29,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Append packages in resource.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function appendResourcePackages()
|
||||
{
|
||||
$allPrivs = array();
|
||||
foreach($this->config->group->package as $packageCode => $package)
|
||||
{
|
||||
if(empty($package->privs)) continue;
|
||||
|
||||
foreach($package->privs as $privCode => $priv)
|
||||
{
|
||||
$allPrivs[$privCode] = $privCode;
|
||||
}
|
||||
}
|
||||
|
||||
/* Privs in resource but not in package. */
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if(isset($allPrivs[$module . '-' . $method])) continue;
|
||||
|
||||
/* Create subset. */
|
||||
if(!isset($this->config->group->subset->$module))
|
||||
{
|
||||
$this->config->group->subset->$module = new stdclass();
|
||||
$this->config->group->subset->$module->order = 10000;
|
||||
$this->config->group->subset->$module->nav = $module;
|
||||
}
|
||||
|
||||
/* Create subset. */
|
||||
$methodPackage = array('create' => 'manage', 'batchcreate' => 'manage', 'browse' => 'browse', 'view' => 'browse', 'delete' => 'delete', 'batchdelete' => 'delete', 'edit' => 'manage', 'batchedit' => 'manage');
|
||||
$packageName = isset($methodPackage[$method]) ? $methodPackage[$method] : 'other';
|
||||
$packageCode = $module . $packageName;
|
||||
if(!isset($this->config->group->package->$packageCode))
|
||||
{
|
||||
$this->config->group->package->$packageCode = new stdclass();
|
||||
$this->config->group->package->$packageCode->order = 5;
|
||||
$this->config->group->package->$packageCode->subset = $module;
|
||||
$this->config->group->package->$packageCode->privs = array();
|
||||
$this->lang->group->package->$packageCode = $this->lang->group->package->$packageName;
|
||||
}
|
||||
|
||||
/* Browse action in workflow. */
|
||||
if(isset($this->lang->$module->menus) && $method == 'browse')
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
|
||||
foreach($this->lang->$module->menus as $flowMethod => $flowName)
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$flowMethod"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array("$module-$method"), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 权限分组列表页面。
|
||||
* Browse groups.
|
||||
*
|
||||
* @access public
|
||||
@@ -160,6 +100,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制权限分组。
|
||||
* Copy a group.
|
||||
*
|
||||
* @param int $groupID
|
||||
@@ -183,6 +124,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 视野维护。
|
||||
* Manage view.
|
||||
*
|
||||
* @param int $groupID
|
||||
@@ -244,6 +186,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配分组权限。
|
||||
* Manage privleges of a group.
|
||||
*
|
||||
* @param string $type byPackage|byGroup|byModule
|
||||
@@ -253,7 +196,7 @@ class group extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function managePriv($type = 'byPackage', $param = 0, $nav = '', $version = '')
|
||||
public function managePriv(string $type = 'byPackage', int $param = 0, string $nav = '', string $version = '')
|
||||
{
|
||||
if($type == 'byGroup' or $type == 'byPackage') $groupID = $param;
|
||||
|
||||
@@ -276,6 +219,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 维护分组成员。
|
||||
* Manage members of a group.
|
||||
*
|
||||
* @param int $groupID
|
||||
@@ -283,7 +227,7 @@ class group extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageMember($groupID, $deptID = 0)
|
||||
public function manageMember(int $groupID, int $deptID = 0)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
@@ -308,6 +252,7 @@ class group extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 维护项目管理员。
|
||||
* Manage members of a group.
|
||||
*
|
||||
* @param int $groupID
|
||||
@@ -315,7 +260,7 @@ class group extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageProjectAdmin($groupID, $deptID = 0)
|
||||
public function manageProjectAdmin(int $groupID, int $deptID = 0)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
@@ -354,7 +299,7 @@ class group extends control
|
||||
public function delete(int $groupID)
|
||||
{
|
||||
$group = $this->group->getByID($groupID);
|
||||
$this->group->delete($groupID);
|
||||
$this->group->remove($groupID);
|
||||
|
||||
/* if ajax request, send result. */
|
||||
if(dao::isError())
|
||||
@@ -371,548 +316,6 @@ class group extends control
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit manage priv.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $view
|
||||
* @param int $paramID
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editManagePriv($browseType = '', $view = '', $paramID = 0, $recPerPage = 100, $pageID = 1)
|
||||
{
|
||||
if(empty($browseType) and $browseType != 'bysearch') $browseType = $this->cookie->managePrivEditType ? $this->cookie->managePrivEditType : 'bycard';
|
||||
if($browseType == 'bysearch' and $this->cookie->managePrivEditType == 'bycard') $browseType = 'bycard';
|
||||
|
||||
$moduleLang = $this->group->getMenuModules($view, true);
|
||||
|
||||
if($browseType == 'bycard')
|
||||
{
|
||||
$privs = $this->group->getPrivsListByView($view);
|
||||
$privs = $this->group->transformPrivLang($privs);
|
||||
$privPackages = $this->group->getPrivManagerPairs('package');
|
||||
|
||||
$privList = array();
|
||||
foreach($privs as $privID => $priv)
|
||||
{
|
||||
if(!isset($privList[$priv->parentCode])) $privList[$priv->parentCode] = array();
|
||||
if(!is_array($privList[$priv->parentCode])) $privList[$priv->parentCode] = array();
|
||||
if(!isset($privList[$priv->parentCode][$priv->parent])) $privList[$priv->parentCode][$priv->parent] = array();
|
||||
$privList[$priv->parentCode][$priv->parent][$priv->key] = $priv;
|
||||
}
|
||||
|
||||
$this->view->privPackages = $privPackages;
|
||||
}
|
||||
else
|
||||
{
|
||||
$privList = $browseType != 'bysearch' ? $this->group->getPrivsListByView($view) : $this->group->getPrivsListBySearch($paramID);
|
||||
$privs = $this->group->transformPrivLang($privList);
|
||||
|
||||
/* Pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$total = count($privList);
|
||||
$pager = new pager($total, $recPerPage, $pageID);
|
||||
$privList = array_chunk($privList, $pager->recPerPage, true);
|
||||
$privList = empty($privList) ? $privList : $privList[$pageID - 1];
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$paramID : 0;
|
||||
$actionURL = $this->createLink('group', 'editManagePriv', "browseType=bysearch&view=¶mID=myQueryID&recPerPage=$recPerPage");
|
||||
$this->group->buildPrivSearchForm($queryID, $actionURL);
|
||||
|
||||
$privRelations = $this->group->getPrivRelationsByIdList(array_keys($privList));
|
||||
if(!isset($privRelations['recommend'])) $privRelations['recommend'] = array();
|
||||
if(!isset($privRelations['depend'])) $privRelations['depend'] = array();
|
||||
|
||||
$this->view->pager = $pager;
|
||||
$this->view->privRelations = $privRelations;
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->editManagePriv;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->privList = $privList;
|
||||
$this->view->packages = $this->group->getPrivPackagePairs($view);
|
||||
$this->view->moduleLang = $moduleLang;
|
||||
$this->view->modulePackages = $this->group->getModuleAndPackageTree();
|
||||
$this->view->view = $view;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch change package.
|
||||
*
|
||||
* @param string $module
|
||||
* @param int $packageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchChangePackage($module, $packageID)
|
||||
{
|
||||
if(empty($_POST['privIdList'])) return print(js::reload('parent'));
|
||||
$privIdList = array_unique($_POST['privIdList']);
|
||||
$allChanges = $this->group->batchChangePackage($privIdList, $module, $packageID);
|
||||
if(dao::isError()) return print(js::error(dao::getError()));
|
||||
|
||||
$this->loadModel('action');
|
||||
foreach($allChanges as $privID => $changes)
|
||||
{
|
||||
$actionID = $this->action->create('privlang', $privID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage privilege packages.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function managePrivPackage()
|
||||
{
|
||||
$this->view->title = $this->lang->group->managePrivPackage;
|
||||
$this->view->packagesTreeList = $this->group->getPrivPackageTreeList();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a privilege package.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createPrivPackage()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$packageID = $this->group->createPrivPackage();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->createPrivPackage;
|
||||
$this->view->modules = $this->group->getPrivModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a privilege package.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editPrivPackage($privPackageID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->group->updatePrivPackage($privPackageID);
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('privpackage', $privPackageID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->editPrivPackage;
|
||||
$this->view->privPackage = $this->group->getPrivPackageByID($privPackageID);
|
||||
$this->view->modules = $this->group->getPrivModules();
|
||||
$this->view->actions = $this->loadModel('action')->getList('privpackage', $privPackageID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort priv packages.
|
||||
*
|
||||
* @param int $parentID
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function sortPrivPackages($parentID = 0, $type = '')
|
||||
{
|
||||
$orders = $_POST['orders'];
|
||||
if(empty($orders)) return false;
|
||||
if($type == 'view')
|
||||
{
|
||||
$orders = str_replace('View,', ',', $orders);
|
||||
$orders = trim($orders, ',');
|
||||
$this->loadModel('setting')->setItem("system.priv.views", $orders);
|
||||
}
|
||||
if($type == 'module')
|
||||
{
|
||||
$orders = trim($orders, ',');
|
||||
$parentID = rtrim($parentID, 'View');
|
||||
$this->loadModel('setting')->setItem("system.priv.{$parentID}Modules", $orders);
|
||||
}
|
||||
if($type == 'package')
|
||||
{
|
||||
$orders = explode(',', $orders);
|
||||
foreach($orders as $index => $id)
|
||||
{
|
||||
if(!empty($id)) $this->group->updatePackageOrder($id, ($index + 1) * 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a priv package.
|
||||
*
|
||||
* @param int $privPackageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deletePrivPackage($privPackageID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
return print(js::confirm($this->lang->group->confirmDeleteAB, $this->createLink('group', 'deletePrivPackage', "privPackageID=$privPackageID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$privPackage = $this->group->getPrivPackageByID($privPackageID);
|
||||
$this->group->deletePrivPackage($privPackageID);
|
||||
if(!dao::isError()) $this->loadModel('action')->create('privpackage', $privPackageID, 'deleted', '', zget($privPackage, 'name'));
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add recommendation.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $type depend|recommend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function addRelation($privIdList, $type)
|
||||
{
|
||||
if(strpos("depend|recommend", $type) === false) return print('Error type');
|
||||
|
||||
if($this->server->request_method == 'POST')
|
||||
{
|
||||
if(empty($_POST['relation'])) return print(js::alert($this->lang->group->noticeNoChecked));
|
||||
|
||||
$this->group->saveRelation($privIdList, $type);
|
||||
if(strpos($privIdList, ',') === false) print(js::execute("if(typeof(parent.parent.getSideRelation) == 'function') parent.parent.getSideRelation({$privIdList})"));
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
$privs = $this->group->getPrivByIdList($privIdList);
|
||||
$modules = array();
|
||||
foreach($privs as $priv) $modules[$priv->module] = $priv->module;
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($modules);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$this->view->privs = $privs;
|
||||
$this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true);
|
||||
$this->view->packages = $this->group->getPackagePairs($packageIdList);
|
||||
$this->view->modulePrivs = $modulePrivs;
|
||||
$this->view->type = $type;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete relation.
|
||||
*
|
||||
* @param string $type recommend|depend
|
||||
* @param int $privID
|
||||
* @param int $relationPriv
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteRelation($type, $privID, $relationPriv)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_PRIVRELATION)->where('type')->eq($type)->andWhere('priv')->eq($privID)->andWhere('relationPriv')->eq($relationPriv)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch delete relation.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $type recommend|depend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchDeleteRelation($privIdList, $type)
|
||||
{
|
||||
if(strpos("depend|recommend", $type) === false) return print('Error type');
|
||||
|
||||
if($this->server->request_method == 'POST')
|
||||
{
|
||||
if(empty($_POST['relation'])) return print(js::alert($this->lang->group->noticeNoChecked));
|
||||
|
||||
$data = fixer::input('post')->get();
|
||||
$deletedPriv = array();
|
||||
foreach($data->relation as $module => $relations) $deletedPriv = array_merge($deletedPriv, $relations);
|
||||
$this->dao->delete()->from(TABLE_PRIVRELATION)->where('type')->eq($type)->andWhere('priv')->in($privIdList)->andWhere('relationPriv')->in($deletedPriv)->exec();
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
$privs = $this->group->getPrivByIdList($privIdList);
|
||||
$modules = array();
|
||||
foreach($privs as $priv) $modules[$priv->module] = $priv->module;
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($modules);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$this->view->privs = $privs;
|
||||
$this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true);
|
||||
$this->view->packages = $this->group->getPackagePairs($packageIdList);
|
||||
$this->view->modulePrivs = $modulePrivs;
|
||||
$this->view->type = $type;
|
||||
$this->display('group', 'addrelation');
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv tree.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $module
|
||||
* @param string $type recommend|depend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetPrivTree($privIdList, $module, $type = 'recommend')
|
||||
{
|
||||
if(is_string($privIdList)) $privIdList = explode(',', $privIdList);
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($module);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$modules = $this->group->getMenuModules(null, true);
|
||||
$packages = $this->group->getPackagePairs($packageIdList);
|
||||
|
||||
$tree = "<ul class='tree' data-ride='tree'><li>";
|
||||
$tree .= html::a('#', $modules[$module]);
|
||||
$tree .= "<ul class='relationBox'>";
|
||||
foreach($packages as $packageID => $packageName)
|
||||
{
|
||||
if(empty($modulePrivs[$module][$packageID])) continue;
|
||||
$tree .= "<li class='clearleft'>";
|
||||
$tree .= html::a('#', $packageName);
|
||||
$tree .= '<ul>';
|
||||
|
||||
foreach($modulePrivs[$module][$packageID] as $id => $modulePriv)
|
||||
{
|
||||
$tree .= '<li>';
|
||||
$tree .= html::checkbox("relation[$module]", array($id => $modulePriv->name), '');
|
||||
$tree .= '</li>';
|
||||
}
|
||||
$tree .= '</ul></li>';
|
||||
unset($modulePrivs[$module][$packageID]);
|
||||
}
|
||||
if(!empty($modulePrivs[$module]))
|
||||
{
|
||||
$tree .= "<li class='clearleft'>";
|
||||
$tree .= html::a('#', $this->lang->group->unassigned);
|
||||
$tree .= '<ul>';
|
||||
foreach($modulePrivs[$module] as $packageID => $packagePrivs)
|
||||
{
|
||||
foreach($packagePrivs as $id => $modulePriv)
|
||||
{
|
||||
$tree .= '<li>';
|
||||
$tree .= html::checkbox("relation[$module]", array($id => $modulePriv->name), '');
|
||||
$tree .= '</li>';
|
||||
}
|
||||
}
|
||||
$tree .= '</ul></li>';
|
||||
}
|
||||
$tree .= '</ul></li></ul>';
|
||||
return print($tree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a priv.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createPriv()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$packageID = $this->group->createPriv();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
$views = $this->loadModel('setting')->getItem("owner=system&module=priv&key=views");
|
||||
$views = explode(',', $views);
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
foreach($views as $index => $view)
|
||||
{
|
||||
$views[$view] = isset($this->lang->{$view}->common) ? $this->lang->{$view}->common : zget($moduleLang, $view);
|
||||
unset($views[$index]);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->createPriv;
|
||||
$this->view->views = $views;
|
||||
$this->view->modules = $this->group->getPrivModules('', 'noViewName');
|
||||
$this->view->packages = $this->group->getPrivPackagePairs();
|
||||
$this->view->moduleViewPairs = $this->group->getPrivModuleViewPairs();
|
||||
$this->view->packageModulePairs = $this->group->getPrivPackagePairs('', '', 'module');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a priv.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return void
|
||||
**/
|
||||
public function editPriv($privID)
|
||||
{
|
||||
$privID = intval($privID);
|
||||
$priv = $this->group->getPrivByID($privID);
|
||||
|
||||
if(!$priv)
|
||||
{
|
||||
return print(js::alert($this->lang->group->noneProject));
|
||||
}
|
||||
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$currentLang = $this->app->clientLang ? : 'zh-cn';
|
||||
$changes = $this->group->updatePriv($privID, $currentLang);
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('privlang', $privID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => true, 'closeModal' => true));
|
||||
|
||||
$this->send(array('result' => $responseResult, 'message' => $responseMessage, 'load' => $locate));
|
||||
}
|
||||
|
||||
$views = $this->loadModel('setting')->getItem("owner=system&module=priv&key=views");
|
||||
$views = explode(',', $views);
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
foreach($views as $index => $view)
|
||||
{
|
||||
$views[$view] = isset($this->lang->{$view}->common) ? $this->lang->{$view}->common : zget($moduleLang, $view);
|
||||
unset($views[$index]);
|
||||
}
|
||||
$moduleViewPairs = $this->group->getPrivModuleViewPairs();
|
||||
$priv->view = zget($moduleViewPairs, $priv->module, '');
|
||||
|
||||
$this->view->title = $this->lang->group->editPriv;
|
||||
$this->view->views = $views;
|
||||
$this->view->modules = $this->group->getPrivModules($priv->view, 'noViewName');
|
||||
$this->view->packages = $this->group->getPrivPackagePairs($priv->view, $priv->module);
|
||||
$this->view->moduleViewPairs = $moduleViewPairs;
|
||||
$this->view->packageModulePairs = $this->group->getPrivPackagePairs('', '', 'module');
|
||||
$this->view->priv = $priv;
|
||||
$this->view->actions = $this->loadModel('action')->getList('privlang', $privID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a priv.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deletePriv($privID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
return print(js::confirm($this->lang->group->confirmDeleteAB, $this->createLink('group', 'deletePriv', "privID=$privID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$priv = $this->group->getPrivByID($privID);
|
||||
$this->group->deletePriv($privID);
|
||||
if(!dao::isError()) $this->loadModel('action')->create('privlang', $privID, 'deleted', '', "$priv->moduleName-$priv->methodName");
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv modules by view.
|
||||
*
|
||||
* @param string $viewName
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetPrivModules($viewName = '')
|
||||
{
|
||||
$modules = $this->group->getPrivModules($viewName, 'noViewName');
|
||||
echo html::select('module', array('' => '') + $modules, '', "class='form-control picker-select' onchange='loadPackages(this.value, \"module\")'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv packages by view or module.
|
||||
*
|
||||
* @param string $object
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetPrivPackages($object = '', $type = 'view')
|
||||
{
|
||||
$packages = array();
|
||||
if($type == 'view') $packages = $this->group->getPrivPackagePairs($object);
|
||||
if($type == 'module') $packages = $this->group->getPrivPackagePairs('', $object);
|
||||
echo html::select('package', array('' => '') + $packages, '', "class='form-control picker-select' onchange='changeViewAndModule(this.value)'");
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Get priv's related priv list.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function ajaxGetPrivRelations($privID)
|
||||
{
|
||||
$relatedPrivs = $this->group->getPrivRelation($privID);
|
||||
if(empty($relatedPrivs)) return print('');
|
||||
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
$privList = array('depend' => array(), 'recommend' => array());
|
||||
foreach($relatedPrivs as $type => $relations)
|
||||
{
|
||||
foreach($relations as $relatedPriv)
|
||||
{
|
||||
$module = $relatedPriv->module;
|
||||
if(!isset($privList[$type][$module])) $privList[$type][$module] = array();
|
||||
$privList[$type][$module]['text'] = zget($moduleLang, $module, $module);
|
||||
$privList[$type][$module]['module'] = $relatedPriv->module;
|
||||
$privList[$type][$module]['children'][] = array('text' => $relatedPriv->name, 'relationPriv' => $relatedPriv->id, 'privID' => $privID);
|
||||
}
|
||||
$privList[$type] = array_values($privList[$type]);
|
||||
}
|
||||
return print(json_encode($privList));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: update priv order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxUpdatePrivOrder()
|
||||
{
|
||||
if(!empty($_POST)) $this->group->updatePrivOrder();
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Get privs by parents.
|
||||
*
|
||||
@@ -921,7 +324,7 @@ class group extends control
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function ajaxGetPrivByParents($selectedSubset, $selectedPackages)
|
||||
public function ajaxGetPrivByParents(string $selectedSubset, string $selectedPackages)
|
||||
{
|
||||
$privs = $this->group->getPrivByParents($selectedSubset, $selectedPackages);
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ $lang->group->manageView = 'Anzeigen';
|
||||
$lang->group->managePriv = 'Assign Privileges';
|
||||
$lang->group->managePrivByGroup = 'Assign Privileges by Group';
|
||||
$lang->group->managePrivByModule = 'Modul Rechte';
|
||||
$lang->group->byModuleTips = '<span class="tips">(SHIFT/STRG für Multi-Select)</span>';
|
||||
$lang->group->byModuleTips = '(SHIFT/STRG für Multi-Select)';
|
||||
$lang->group->allTips = 'After checking this option, the administrator can manage all objects in the system, including objects created later.';
|
||||
$lang->group->manageMember = 'Mitglieder';
|
||||
$lang->group->manageProjectAdmin = "Manage {$lang->projectCommon} Admins";
|
||||
|
||||
@@ -20,7 +20,7 @@ $lang->group->manageView = 'Manage Sight';
|
||||
$lang->group->managePriv = 'Assign Privileges';
|
||||
$lang->group->managePrivByGroup = 'Assign Privileges by Group';
|
||||
$lang->group->managePrivByModule = 'Manage Privileges by Module';
|
||||
$lang->group->byModuleTips = '<span class="tips">(Press Shift/Ctrl to Multi-select)</span>';
|
||||
$lang->group->byModuleTips = '(Press Shift/Ctrl to Multi-select)';
|
||||
$lang->group->allTips = 'After checking this option, the administrator can manage all objects in the system, including objects created later.';
|
||||
$lang->group->manageMember = 'Manage Members';
|
||||
$lang->group->manageProjectAdmin = "Manage {$lang->projectCommon} Admins";
|
||||
|
||||
@@ -20,7 +20,7 @@ $lang->group->manageView = 'Gérer droits consultation';
|
||||
$lang->group->managePriv = 'Assign Privileges';
|
||||
$lang->group->managePrivByGroup = 'Assign Privileges by Group';
|
||||
$lang->group->managePrivByModule = 'Gérer Privilèges par Module';
|
||||
$lang->group->byModuleTips = '<span class="tips">(Shift/Ctrl pour sélection multiple)</span>';
|
||||
$lang->group->byModuleTips = '(Shift/Ctrl pour sélection multiple)';
|
||||
$lang->group->allTips = 'After checking this option, the administrator can manage all objects in the system, including objects created later.';
|
||||
$lang->group->manageMember = 'Gérer Membres';
|
||||
$lang->group->manageProjectAdmin = "Manage {$lang->projectCommon} Admins";
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->group->manageView = 'Quản lý Sight';
|
||||
$lang->group->managePriv = 'Quản lý Privileges';
|
||||
$lang->group->managePrivByGroup = 'Quản lý Privileges by Group';
|
||||
$lang->group->managePrivByModule = 'Quản lý Privileges by Module';
|
||||
$lang->group->byModuleTips = '<span class="tips">(Press Shift/Ctrl to Multi-select)</span>';
|
||||
$lang->group->byModuleTips = '(Press Shift/Ctrl to Multi-select)';
|
||||
$lang->group->manageMember = 'Quản lý Members';
|
||||
$lang->group->manageProjectAdmin = 'Manage Program Admins';
|
||||
$lang->group->editManagePriv = 'Permission Edit';
|
||||
|
||||
@@ -20,7 +20,7 @@ $lang->group->manageView = '视野维护';
|
||||
$lang->group->managePriv = '分配权限';
|
||||
$lang->group->managePrivByGroup = '分配权限';
|
||||
$lang->group->managePrivByModule = '按模块分配权限';
|
||||
$lang->group->byModuleTips = '<span class="tips">(可以按住Shift或者Ctrl键进行多选)</span>';
|
||||
$lang->group->byModuleTips = '(可以按住Shift或者Ctrl键进行多选)';
|
||||
$lang->group->allTips = '勾选此项后,管理员可管理系统中所有对象,包括后续创建的对象。';
|
||||
$lang->group->manageMember = '成员维护';
|
||||
$lang->group->manageProjectAdmin = "维护{$lang->projectCommon}管理员";
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->group->manageView = '視野維護';
|
||||
$lang->group->managePriv = '權限維護';
|
||||
$lang->group->managePrivByGroup = '權限維護';
|
||||
$lang->group->managePrivByModule = '按模組分配權限';
|
||||
$lang->group->byModuleTips = '<span class="tips">(可以按住Shift或者Ctrl鍵進行多選)</span>';
|
||||
$lang->group->byModuleTips = '(可以按住Shift或者Ctrl鍵進行多選)';
|
||||
$lang->group->manageMember = '成員維護';
|
||||
$lang->group->manageProjectAdmin = '維護項目管理員';
|
||||
$lang->group->confirmDelete = '您確定刪除該用戶分組嗎?';
|
||||
|
||||
+36
-1611
File diff suppressed because it is too large
Load Diff
@@ -180,22 +180,6 @@ class groupTest
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get groups by accounts.
|
||||
*
|
||||
* @param array $accounts
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByAccountsTest($accounts)
|
||||
{
|
||||
$objects = $this->objectModel->getByAccounts($accounts);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the account number in the group.
|
||||
*
|
||||
@@ -245,47 +229,30 @@ class groupTest
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user programs of a group.
|
||||
* 测试getAdmins方法。
|
||||
* Test getAdmins method.
|
||||
*
|
||||
* @param int $groupID
|
||||
* @param array $idList
|
||||
* @param string $field
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUserProgramsTest($groupID)
|
||||
public function getAdminsTest(array $idList, string $field = 'programs'): array
|
||||
{
|
||||
$objects = $this->objectModel->getUserPrograms($groupID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
return $this->objectModel->getAdmins($idList, $field);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ID of the group that has access to the program.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAccessProgramGroupTest()
|
||||
{
|
||||
$objects = $this->objectModel->getAccessProgramGroup();
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a group.
|
||||
* Remove a group.
|
||||
*
|
||||
* @param int $groupID
|
||||
* @param null $null compatible with that of model::delete()
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteTest($groupID, $null = null)
|
||||
public function removeTest($groupID)
|
||||
{
|
||||
$this->objectModel->delete($groupID, $null = null);
|
||||
$this->objectModel->remove($groupID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
@@ -369,90 +336,4 @@ class groupTest
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check menu have module
|
||||
*
|
||||
* @param string $menu
|
||||
* @param string $moduleName
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkMenuModuleTest($menu, $moduleName)
|
||||
{
|
||||
$objects = $this->objectModel->checkMenuModule($menu, $moduleName);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get modules in menu
|
||||
*
|
||||
* @param string $menu
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getMenuModulesTest($menu)
|
||||
{
|
||||
$objects = $this->objectModel->getMenuModules($menu);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取一条权限的基本信息
|
||||
*
|
||||
* @param int $privID
|
||||
* @param string $lang
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getPrivInfoTest($priv, $lang)
|
||||
{
|
||||
$object = $this->objectModel->getPrivInfo($priv, $lang);
|
||||
if(dao::isError()) return dao::getError();
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模块和权限包option
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModuleAndPackageTreeTest()
|
||||
{
|
||||
return $this->objectModel->getModuleAndPackageTree();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updatePrivTest($privID, $lang)
|
||||
{
|
||||
$this->objectModel->updatePrivLang($privID,$lang);
|
||||
if(dao::isError()) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试getAdmins方法。
|
||||
* Test getAdmins method.
|
||||
*
|
||||
* @param array $idList
|
||||
* @param string $field
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAdminsTest(array $idList, string $field = 'programs'): array
|
||||
{
|
||||
return $this->objectModel->getAdmins($idList, $field);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
title=测试groupModel->getModuleAndPackageTree();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
|
||||
*/
|
||||
$group = new groupTest();
|
||||
var_dump($group->getModuleAndPackageTreeTest());
|
||||
r($group->getModuleAndPackageTreeTest()) && p() && e("获取数据");
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 groupModel->checkMenuModule();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
$group = new groupTest();
|
||||
|
||||
r($group->checkMenuModuleTest('','index')) && p('') && e(1); // 测试获取 '','index' 的返回结果
|
||||
r($group->checkMenuModuleTest('my','tree')) && p('') && e(''); // 测试获取 'my','tree' 的返回结果
|
||||
r($group->checkMenuModuleTest('none','tree')) && p('') && e(''); // 测试获取 'none','tree' 的返回结果
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
/**
|
||||
*
|
||||
* title = 测试 groupModel->getPrivInfo();
|
||||
*
|
||||
* cid=1
|
||||
* pid=1
|
||||
*
|
||||
*/
|
||||
|
||||
$group = new groupTest();
|
||||
|
||||
$_POST['name'] = '修改test';
|
||||
$_POST['desc'] = '描述描述描述';
|
||||
$_POST['module'] = 'webhook';
|
||||
r($group->updatePrivTest(3324,'zh-cn')) && p('priv') && e("这是获取到的一条权限");
|
||||
|
||||
//测试获取 id为3324的权限信息
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 groupModel->getAccessProgramGroup();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试获取group中用户个数 >> 14
|
||||
|
||||
*/
|
||||
|
||||
$group = new groupTest();
|
||||
$AccessProgramGroup = $group->getAccessProgramGroupTest();
|
||||
|
||||
r(count($AccessProgramGroup)) && p('') && e('14'); //测试获取group中用户个数
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 groupModel->getByAccounts();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试获取用户 outside3 的权限分组信息 >> outside3
|
||||
测试获取用户 top2 的权限分组信息 >> top2
|
||||
测试获取用户 pd2 的权限分组信息 >> pd2
|
||||
测试获取用户 td1 的权限分组信息 >> td1
|
||||
测试获取用户 pm1 的权限分组信息 >> pm1
|
||||
测试获取用户 po48 的权限分组信息 >> po48
|
||||
测试获取用户 dev100 的权限分组信息 >> dev100
|
||||
测试获取用户 test2 的权限分组信息 >> test2
|
||||
|
||||
*/
|
||||
|
||||
$accountList = array();
|
||||
$accountList[0] = array('outside3', 'top2');
|
||||
$accountList[1] = array('td1', 'pd2');
|
||||
$accountList[2] = array('po48', 'pm1');
|
||||
$accountList[3] = array('dev100', 'test2');
|
||||
|
||||
$group = new groupTest();
|
||||
$groups0 = $group->getByAccountsTest($accountList[0]);
|
||||
$groups1 = $group->getByAccountsTest($accountList[1]);
|
||||
$groups2 = $group->getByAccountsTest($accountList[2]);
|
||||
$groups3 = $group->getByAccountsTest($accountList[3]);
|
||||
|
||||
r($groups0['outside3']) && p('0:account') && e('outside3'); //测试获取用户 outside3 的权限分组信息
|
||||
r($groups0['top2']) && p('0:account') && e('top2'); //测试获取用户 top2 的权限分组信息
|
||||
r($groups1['pd2']) && p('0:account') && e('pd2'); //测试获取用户 pd2 的权限分组信息
|
||||
r($groups1['td1']) && p('0:account') && e('td1'); //测试获取用户 td1 的权限分组信息
|
||||
r($groups2['pm1']) && p('0:account') && e('pm1'); //测试获取用户 pm1 的权限分组信息
|
||||
r($groups2['po48']) && p('0:account') && e('po48'); //测试获取用户 po48 的权限分组信息
|
||||
r($groups3['dev100']) && p('0:account') && e('dev100'); //测试获取用户 dev100 的权限分组信息
|
||||
r($groups3['test2']) && p('0:account') && e('test2'); //测试获取用户 test2 的权限分组信息
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 groupModel->getMenuModules();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试查询 product 菜单的模块 >> product,branch,story
|
||||
测试查询 my 菜单的模块 >> my,todo
|
||||
测试查询 qa 菜单的模块 >> qa,bug,caselib
|
||||
测试查询 project 菜单的模块 >> design,projectbuild,projectstory
|
||||
|
||||
*/
|
||||
|
||||
$group = new groupTest();
|
||||
|
||||
r($group->getMenuModulesTest('product')) && p('0,1,2') && e('product,branch,story'); // 测试查询 product 菜单的模块
|
||||
r($group->getMenuModulesTest('my')) && p('0,1') && e('my,todo'); // 测试查询 my 菜单的模块
|
||||
r($group->getMenuModulesTest('qa')) && p('0,1,6') && e('qa,bug,caselib'); // 测试查询 qa 菜单的模块
|
||||
r($group->getMenuModulesTest('project')) && p('0,3,4') && e('design,projectbuild,projectstory'); // 测试查询 project 菜单的模块
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
/**
|
||||
*
|
||||
* title = 测试 groupModel->getPrivInfo();
|
||||
*
|
||||
* cid=1
|
||||
* pid=1
|
||||
*
|
||||
*/
|
||||
|
||||
$group = new groupTest();
|
||||
|
||||
|
||||
r($group->getPrivInfoTest(3324,'zh-cn')) && p('priv') && e("这是获取到的一条权限");
|
||||
|
||||
//测试获取 id为3324的权限信息
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/group.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 groupModel->getUserPrograms();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
$groupList = array(1,2,3,4,5);
|
||||
$userIDList = array('td81','dev100','pd10','td50','td64');
|
||||
$resultList = array(74,29,13,43,57);
|
||||
|
||||
$group = new groupTest();
|
||||
|
||||
r($group->getUserProgramsTest($groupList[0])) && p($userIDList[0]) && e(74); //检查权限分组 1 的用户项目信息
|
||||
r($group->getUserProgramsTest($groupList[1])) && p($userIDList[1]) && e(29); //检查权限分组 2 的用户项目信息
|
||||
r($group->getUserProgramsTest($groupList[2])) && p($userIDList[2]) && e(13); //检查权限分组 3 的用户项目信息
|
||||
r($group->getUserProgramsTest($groupList[3])) && p($userIDList[3]) && e(43); //检查权限分组 4 的用户项目信息
|
||||
r($group->getUserProgramsTest($groupList[4])) && p($userIDList[4]) && e(57); //检查权限分组 5 的用户项目信息
|
||||
@@ -11,6 +11,86 @@ declare(strict_types=1);
|
||||
*/
|
||||
class groupZen extends group
|
||||
{
|
||||
/**
|
||||
* 有些权限在resource里添加了,但没有在packagemanager里同步更新,需要追加上
|
||||
* Append packages in resource.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function appendResourcePackages()
|
||||
{
|
||||
$allPrivs = array();
|
||||
foreach($this->config->group->package as $packageCode => $package)
|
||||
{
|
||||
if(empty($package->privs)) continue;
|
||||
|
||||
foreach($package->privs as $privCode => $priv)
|
||||
{
|
||||
$allPrivs[$privCode] = $privCode;
|
||||
}
|
||||
}
|
||||
|
||||
/* Privs in resource but not in package. */
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if(isset($allPrivs[$module . '-' . $method])) continue;
|
||||
|
||||
/* Create subset. */
|
||||
if(!isset($this->config->group->subset->$module))
|
||||
{
|
||||
$this->config->group->subset->$module = new stdclass();
|
||||
$this->config->group->subset->$module->order = 10000;
|
||||
$this->config->group->subset->$module->nav = $module;
|
||||
}
|
||||
|
||||
/* Create subset. */
|
||||
$methodPackage = array('create' => 'manage', 'batchcreate' => 'manage', 'browse' => 'browse', 'view' => 'browse', 'delete' => 'delete', 'batchdelete' => 'delete', 'edit' => 'manage', 'batchedit' => 'manage');
|
||||
$packageName = isset($methodPackage[$method]) ? $methodPackage[$method] : 'other';
|
||||
$packageCode = $module . $packageName;
|
||||
if(!isset($this->config->group->package->$packageCode))
|
||||
{
|
||||
$this->config->group->package->$packageCode = new stdclass();
|
||||
$this->config->group->package->$packageCode->order = 5;
|
||||
$this->config->group->package->$packageCode->subset = $module;
|
||||
$this->config->group->package->$packageCode->privs = array();
|
||||
$this->lang->group->package->$packageCode = $this->lang->group->package->$packageName;
|
||||
}
|
||||
|
||||
$this->appendWorkflowMenu($packageCode, $module, $method);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作流列表页面的菜单也需要拆分不同的权限,比如全部、未关闭、已完成
|
||||
* Append priv to package of workflow browse menu.
|
||||
*
|
||||
* @param string $packageCode
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @access protected
|
||||
* @return mixed
|
||||
*/
|
||||
protected function appendWorkflowMenu(string $packageCode, string $module, string $method)
|
||||
{
|
||||
/* Browse action in workflow. */
|
||||
if(isset($this->lang->$module->menus) && $method == 'browse')
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
|
||||
foreach($this->lang->$module->menus as $flowMethod => $flowName)
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$flowMethod"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array("$module-$method"), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Manage priv by package or group.
|
||||
*
|
||||
@@ -117,6 +197,7 @@ class groupZen extends group
|
||||
/* Subsets in package. */
|
||||
foreach($this->config->group->package as $packageCode => $packageData)
|
||||
{
|
||||
if(!isset($packageData->privs)) continue;
|
||||
foreach($packageData->privs as $privCode => $priv)
|
||||
{
|
||||
list($moduleName, $methodName) = explode('-', $privCode);
|
||||
|
||||
Reference in New Issue
Block a user