一、概述
細粒度的權限控制指對應範本中的可見內容進行控制,可控制的內容包括儲存格內容,元件、列欄、工具欄,sheet,圖表等。
FineReport 對權限細粒度的控制提供了 2 種不同的控制方式,一個是完全視覺化的權限編輯,另外一個是根據 FineReport 提供的內建參數來控制檢視權限。
二、視覺化權限編輯面板
開啟設計器,點選 【範本】→【權限編輯】,會進入權限編輯介面。可在左下角的角色面板中選擇角色,對權限編輯面板中的儲存格、元件、工具欄、 sheet 等等內容在權限設定面板設定權限,如下圖所示。
注:FineReport 暫時只支援對範本工具欄、元件、儲存格、懸浮元素、列欄和多 sheet 這幾個方面進行細粒度權限控制。
三、透過參數控制權限
使用者透過決策平台登入後,3個預設參數($fine_username、$fine_role、$fine_position)的值會被系統臨時儲存,使用者登出後,這些參數的值才會被銷燬(這些值是透過Session進行記錄的)。
同時,系統提供2個內建函式GETUSERDEPARTMENTS() 和 GETUSERJOBTITLES() ,分別用於獲取部門角色的部門和職位。
範本可以直接使用這3個預設參數和2個內建函式。在範本裡面透過參數和函式進行篩選,就可以讓不同的使用者看到不同的報表內容。
型別 | 呼叫時的形式 | 備註 |
參數 | $fine_username | |
$fine_role |
| |
$fine_position | ||
函式 | GETUSERDEPARTMENTS() |
|
GETUSERJOBTITLES() |
四、透過資料集參數直接控制權限
1
準備範本。
範本設計如下圖所示。
2
平台掛載範本。
管理員將設計好的範本挂載到決策平台中。
3
分配範本檢視權限。
管理員將該範本的檢視權限分配給使用者 韓文。
4
效果檢視。
韓文 登入決策平台訪問範本時,範本自動篩選 韓文 的資訊。如下圖所示。
五、透過條件屬性控制權限
1
準備範本。
範本設計如下圖所示。
2
新增條件屬性。
若 韓文 角色是 資料分析師,希望 韓文 登入平台訪問範本時,不能檢視【銷量】列。則選中單元格E2,新增條件屬性,屬性選擇【欄寬】,新增公式條件為$fine_role='資料分析師',如下圖所示。
若一個使用者有多個角色,建議將公式條件修改為 find('資料分析師',$fine_role)>0。
3
平台掛載範本。
管理員將設計好的範本挂載到決策平台中。
4
分配範本檢視權限。
管理員將該範本的檢視權限分配給使用者 韓文。
5
效果檢視。
韓文 登入決策平台訪問範本時,效果如下圖所示,銷售資料不顯示。
6
修改公式條件。
若 韓文 所在的部門是銷售部,職位是 Sales,若想透過部門和職位去控制權限,則可將條件屬性中的公式修改為GETUSERDEPARTMENTS()='Sales department' 和 GETUSERJOBTITLES()='Sales',如下圖所示。