1. 概述
1.1 版本
報表伺服器版本 | 功能變動 |
---|---|
11.0 | - |
11.0.31 | 新增參數$fine_role_id,避免角色重新命名導致權限配置失效 |
1.2 功能簡介
權限細粒度控制是指標對範本內部的小處方面進行權限控制,比如說儲存格內容資料,元件、隱藏行列、工具欄,sheet,圖表等等。
不同的角色使用者登入系統,希望可操作的內容不一樣,比如說工具欄按鈕不一樣,範本預覽時,展示的儲存格不一樣,填報資料時,對某些元件擁有的編輯權限不一樣,查看資料時,看到的資料不一樣。
2. 權限細粒度
FineReport 對權限細粒度的控制提供了 2 種不同的控制方式,一個是完全視覺化的權限編輯,另外一個是根據 FineReport 提供的內建參數設定條件屬性來控制權限。
2.1 權限編輯
開啟設計器,開啟需要進行權限控制的範本,點選「範本>進入權限編輯」,進入權限編輯介面。如下圖所示:
開啟設計器,點選,即可在角色面板中選擇角色,對權限編輯面板中的儲存格、元件、工具欄、 sheet 等等內容在權限設定面板設定權限,如下圖所示:
注1:角色面板中的角色列表自動載入數據決策系統中的角色。如果修改了角色名,權限需要重新配置。
注2:FineReport 暫時只支援對範本工具欄、元件、儲存格、懸浮元素、行列和多 sheet 這幾個方面進行細粒度權限控制。
注3:視覺化權限編輯的詳細範例請參見:權限細粒度範本內容控制。
2.2 參數權限控制
使用者認證後會將報表固定的預設參數$fine_username、$fine_role、$fine_role_id、$fine_position儲存在 Session 中。
同時提供兩個函式GETUSERDEPARTMENTS()、GETUSERJOBTITLES()來分別獲取部門和職位。
同一報表環境下,範本中就可以直接以參數的形式獲取到對應的值,然後在範本裏面進行篩選判斷就可以顯示不同資料及樣式。
權限細粒度相關的參數和函式如下表所示:
參數 | 說明 | 範例 |
---|---|---|
$fine_username | 獲取登入系統的帳號 | 例如登入帳號為 Anna $fine_username=Anna |
$fine_role | 獲取登入系統的角色 | 1)若登入使用者為超級管理者 $fine_role=superusers 2)若登入使用者角色為自訂角色(例如:資料架構師) $fine_role=資料架構師 3)若登入使用者無角色 該參數值為空 4)若登入使用者存在多個自訂角色 $fine_role_id=角色1,角色2 |
$fine_role_id | 獲取登入系統的角色ID | 1)若登入使用者為超級管理者 $fine_role_id=super-user-custom-role 2)若登入使用者角色為自訂角色 (例如:資料架構師,id為7b37b885-190d-4db0-b3d3-bf2d15285447) $fine_role_id=7b37b885-190d-4db0-b3d3-bf2d15285447 3)若登入使用者無角色 該參數值為空 4)若登入使用者存在多個自訂角色 $fine_role_id=角色1的id,角色2的id |
$fine_position | 獲取部門職位,回傳值為一個由部門和職位組成的陣列 | 1)若登入使用者為「人力資源-部長」 $fine_position={"departments":"人力資源","jobTitle":"部長"} 2)若登入使用者為「人力資源-部長」兼「領導部-部長」 $fine_position={"departments":"人力資源","jobTitle":"部長"},{"departments":"領導部","jobTitle":"部長"} 3)若登入使用者無部門職位 該參數值為空 |
GETUSERDEPARTMENTS() | 獲取部門職位裏面的部門 若部門存在多個層級,傳回全部層級 若存在多個部門,傳回全部部門 | 1)若登入使用者為「人力資源-部長」 GETUSERDEPARTMENTS()=人力資源 2)若登入使用者為「銷售部-華東銷售部-組長」 GETUSERDEPARTMENTS()=銷售部,華東銷售部 3)若登入使用者為「人力資源-部長」兼「領導部-部長」 GETUSERDEPARTMENTS()=人力資源,領導部 4)若登入使用者無部門 該參數值為空 |
GETUSERDEPARTMENTS(X) | 獲取部門職位裏面的第X層部門 若不存在X層部門,則傳回空值 | 1)若登入使用者為「銷售部-華東銷售部-華東銷售1組-組長」 GETUSERDEPARTMENTS(3)=華東銷售1組 GETUSERDEPARTMENTS(3,2)=華東銷售1組,華東銷售部 2)若登入使用者為「銷售部-華東銷售部-組長」 GETUSERDEPARTMENTS(3)為空值 GETUSERDEPARTMENTS(3,2)=華東銷售部 |
GETUSERJOBTITLES() | 獲取部門職位裏面的職位 若存在多個職位,傳回全部職位 | 1)若登入使用者為「人力資源-部長」 GETUSERJOBTITLES()=部長 2)若登入使用者為「人力資源-部長」兼「領導部-president」 GETUSERJOBTITLES()=部長,president 3)若登入使用者無職位 該參數值為空 |
注1:$fine_username、$fine_role、$fine_role_id、$fine_position 是 FineReport 預設參數,所以呼叫時大小寫必須保持一致。
注2:不支援模擬計算。
注3:參數權限控制的詳細範例請參見:權限細粒度參數控制。
3. 注意事項
問題描述:權限細粒度控制時,開啟同步資料集的時候,在設計器裏進行權限編輯 時已配置角色中出現了內建資料集裏的部門「技術支援總調度」和「技術支援一線技術支援」,但同步資料集裏的部門中並沒有這兩個部門,而且有關「技術支援」的角色部門在決策系統的使用者頁面裏搜尋不到。
原因分析:產品內建 Demo 自帶的上報流程用到這兩個角色,因此在已配置角色裏預設顯示了這兩個角色,但不影響正常使用。
解決方案:在 FineReport 設計器中,點選「伺服器>伺服器配置」,分別在「分頁預覽設定」,「填報頁面設定」,「資料分析設定」介面去掉「使用工具欄」前的對勾。
具體情況如下所示:
上述步驟把伺服器預設範本工具欄清空,若想實現單個範本的權限細粒度的工具欄控制。
使用者可開啟單個範本,點選菜單欄的「範本>範本Web屬性」,設定「為該範本單獨設定」,新增範本所需要的工具。具體情況如下所示: