1. 程式人生 > >tp3.2.3許可權控制二之後臺管理部分,及選單欄目顯示問題

tp3.2.3許可權控制二之後臺管理部分,及選單欄目顯示問題

      上篇記錄了一下許可權控制部分的實現過程,以及實現的程式碼。但那些只是實現了簡單的許可權控制,具體的後臺當然要有使用者的管理,使用者組的管理,規則管理等。這篇主要是寫後臺部分,和上篇湊成一個完整的環。

一、使用者管理,以及許可權管理部分

1、管理員管理

這裡寫圖片描述

這部分是比較簡單的,需要注意的是,新增管理員的時候,要新增對應的分組資訊。

2、許可權管理

這裡寫圖片描述

      這部分是對應許可權組的列表資訊。在新增管理員的時候,要同時往auth_group_access表中加上管理員對應的許可權組。可以考慮使用資料庫的事務。

3、新增和修改許可權組對應的許可權

這裡寫圖片描述

      在新增許可權組的時候,我們需要選擇賦予的許可權。這裡是把所有控制器對應的方法都給列出來,超級管理員可以選擇賦予普通管理員許可權。

這裡需要注意,超級管理員是許可權最大的,不要限制超級管理員。

二、左邊的選單顯示方式

就像之前說的,我們需要根據使用者對應的許可權來顯示選單欄目。如果使用者沒有對應的許可權,我們就不顯示該欄目。

1、線查詢使用者對應的所有規則id,也就是控制器方法的id

function getRules($adminId)
{
  $ruleArr = M('smj_admin')->where('id='."'$adminId'")->find();
  $type = $ruleArr['type'];
  $ruleStr1 = M('smj_auth_group')->where('id='
."'$type'")->find(); $ruleStr = $ruleStr1['rules']; //var_dump($ruleStr); $ruleArr = explode(',',$ruleStr); return $ruleArr; }

這個方法是寫在Common控制器的,作為一個公用方法。根據傳過來的使用者id,查詢對應的瑞澤資訊,並且轉化成陣列。

2、把獲取到的規則陣列傳遞給檢視,在檢視頁進行判斷

這裡寫圖片描述

      我這裡就是採用最笨的方法。把每個列表頁在規則表中對應的id,專門找出來。然後判斷這個列表頁的id在不在使用者對應的許可權陣列中。在的話就顯示,不在的話就不顯示。

      比如這個圖片,我使用者資訊在auth_rule表中對應的id是12,那我就判斷一下,這個12在不在使用者的許可權陣列中。

      以上配合上第一篇文章,基本就完成一個閉環。注意把所有的方法,包括JS非同步請求的方法,都加入到auth_rule表中。這樣就基本OK了。

我這邊做的比較簡單。如果有更好的方案或者問題,請留言,謝謝。

end