6.
XOOPS群組與權限
![](http://tad0616.net/uploads/dl.gif)
一、 XOOPS權限與群組
- XOOPS的權限判斷一律以「群組」為判斷基礎,一個人可以同時隸屬多個群組。
- 一個人的所有權限,就是其所屬群組所有權限的集合。
- 基本的群組有「管理員」、「會員」、「訪客」,另外,可自己新增想要的各種群組。
- 基本的權限有四種,各個模組可自行視需求在模組中新增權限項目:
- (1) 系統管理權限:通常只開放給管理員,擁有整個XOOPS系統生殺大權。
- (2) 模組管理權限:某模組的管理權限,一般也只開給管理者,偶爾開給協助的管理人。
- (3) 模組使用權限:某模組的使用權限,會開放給所有群組,否則有些模組將無法使用。
- (4) 區塊使用權限:某區塊的使用權限,會開放給所有群組,否則有些區塊將看不到。
- 這四種權限,均紀錄在group_permission這個資料表:「system_admin」就是「系統管理權」;「module_read」就是「模組的使用權」;「module_admin」就是「模組的管理權」;「block_read」就是「區塊的使用權」
- 請在群組中新增一個「審稿人員」的群組。
- 至後台「會員」新增一個帳號,並指定為「會員」及「審稿人員」群組。
二、 設定模組權限
- 將groupperm.php複製到模組admin下,並設好權限名稱、權限項目陣列,即有權限設定表單頁面。記得menu.php要加個選項。
- $item_list可以設定多種權限,若只有一種,可留一個即可。
- 如果儲存後有出現錯誤訊息,請修改 \system\admin\groupperm.php ,將
include_once dirname(__FILE__) . '../../../include/cp_header.php';
改為
include_once '../../../include/cp_header.php';
- 儲存成功後,即可在group_permission資料表看到一筆資料,其中gperm_groupid就是「審稿人員」群組的編號,gperm_itemid則是「$item_list」中的「權限項目編號」,gperm_modid則是此模組的模組編號,最後的gperm_name則是我們自訂的「$perm_name」名稱。
![](http://www.tad0616.net/uploads/tad_book3/image/1041/06_pic.png)
三、 套用權限
- 將以下語法套用至需要判斷權限的地方:
$perm_name = '權限名稱';
$perm_itemid = intval(權限項目編號);
$groups =($xoopsUser)? $xoopsUser->getGroups():XOOPS_GROUP_ANONYMOUS;
$module_id = $xoopsModule->getVar('mid');
$gperm_handler =& xoops_gethandler('groupperm');
if($gperm_handler->checkRight($perm_name, $perm_itemid, $groups, $module_id)){
//若有權限要做的動作
}else{
//若沒有權限要做的動作
}
- 可在/tad_ebook/interface_menu.php加入此判斷,並用$_SESSION['verify']來紀錄是否為審核人員,如此就不用每次都要判斷一次。
四、 新增verify.php審核頁面
- 將index.php複製為verify.php,修改xoops_version.php,並產生對應樣板後更新。
- 一開頭便判斷$_SESSION['verify']是否為真,若為假即轉走。
- 列出所有文章並標示有無審核,單一文章加上審核按鈕。
- 修改post.php,寫入時,page_status寫入空值即可,更新時,勿更新該值。