反饋已提交
網絡繁忙
細粒度的權限控制指對應範本中的可見內容進行控制,可控制的內容包括儲存格內容,元件、列欄、工具欄,sheet,圖表等。
FineReport 對權限細粒度的控制提供了 2 種不同的控制方式,一個是完全視覺化的權限編輯,另外一個是根據 FineReport 提供的內建參數來控制檢視權限。
開啟設計器,點選 【範本】→【權限編輯】,會進入權限編輯介面。可在左下角的角色面板中選擇角色,對權限編輯面板中的儲存格、元件、工具欄、 sheet 等等內容在權限設定面板設定權限,如下圖所示。
注:FineReport 暫時只支援對範本工具欄、元件、儲存格、懸浮元素、列欄和多 sheet 這幾個方面進行細粒度權限控制。
使用者透過決策平台登入後,3個預設參數($fine_username、$fine_role、$fine_position)的值會被系統臨時儲存,使用者登出後,這些參數的值才會被銷燬(這些值是透過Session進行記錄的)。
同時,系統提供2個內建函式GETUSERDEPARTMENTS() 和 GETUSERJOBTITLES() ,分別用於獲取部門角色的部門和職位。
範本可以直接使用這3個預設參數和2個內建函式。在範本裡面透過參數和函式進行篩選,就可以讓不同的使用者看到不同的報表內容。
型別
呼叫時的形式
備註
參數
$fine_username
用來匹配使用者的帳號。
例如,透過$fine_username="Anna" 這一判斷條件,可以控制使用者Anna的權限。
$fine_role
用來匹配使用者的角色。
若想控制管理员的權限,则使用判断条件:$fine_role="superusers"
若想控制某一角色的權限,例如角色為[Data architect]的使用者,則使用判斷條件:$fine_role="Data architect"。
若一個使用者有多個角色,比如Anna同時具備角色A和B,對角色A的權限進行限制後,Anna仍然可以讀取角色A不可見的內容,因為Anna也屬於角色B。
$fine_position
用來匹配使用者的部門和職位。
傳回值由部門和職位組成,為 JSON 格式。
例如,要控制人力資源部門部長的許可權,則使用判斷條件:$fine_position={"departments":"Human Resource","jobTitle":"Manager"}。
函式
GETUSERDEPARTMENTS()
傳回使用者所屬的部門。
例如人力資源部門部長登入系統,則GETUSERDEPARTMENTS()的傳回值是"Human Resource"。
若一個使用者所在的部門具有層次,則這個函式可以傳回指定層的部門名稱。假設共有3層,則GETUSERDEPARTMENTS(3,2) ) 傳回使用者所在的部門層級中第3和第2層的部門名稱,傳回值型別為陣列。若最多隻有2層,則只傳回第2層的部門名稱。
GETUSERJOBTITLES()
傳回使用者擔任的職位。
例如人力資源部門部長登入系統,則GETUSERJOBTITLES()的傳回值是"Manager"。
新建資料庫查詢 ds1。
SELECT T1.地區,T1.銷售員,T1. 產品型別,T1.產品,T1.銷量
FROM 銷量 T1 LEFT JOIN userinfo T2
ON T1.銷售員 = T2.fullname
WHERE T2.username='${fine_username}'
範本設計如下圖所示。
管理員將設計好的範本挂载到決策平台中。
管理員將該範本的檢視權限分配給使用者 韓文。
韓文 登入決策平台訪問範本時,範本自動篩選 韓文 的資訊。如下圖所示。
若 韓文 角色是 資料分析師,希望 韓文 登入平台訪問範本時,不能檢視【銷量】列。則選中單元格E2,新增條件屬性,屬性選擇【欄宽】,新增公式條件為$fine_role='資料分析師',如下圖所示。
若一個使用者有多個角色,建議將公式條件修改為 find('資料分析師',$fine_role)>0。
韓文 登入決策平台訪問範本時,效果如下圖所示,銷售資料不顯示。
若 韓文 所在的部門是銷售部,職位是 Sales,若想透過部門和職位去控制權限,則可將條件屬性中的公式修改為GETUSERDEPARTMENTS()='Sales department' 和 GETUSERJOBTITLES()='Sales',如下圖所示。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉