快速查詢有哪些 Permission Set 有開啟了某 Apex Class/Visualforce Page 的權限
情境
假設我現有一個 Visualforce Page 叫做 MyVFPage,而有一個 user 打開這一頁會出現權限不足的錯誤頁面。所以我需要開權限給他。
而我已知曾經有某一個 Permission Set 有包含到這個 Visualforce Page Access,所以我理應不需要再重新 create 一個新的 Permission Set,只要找到舊的這個 Permission Set 並 assign 給該 user 即可。
但是我忘記這個既有的 Permission Set 叫什麼名字了……
目前有數十個上百個 Permission Set,我總不能一個一個點開來檢查確認吧。
有沒有快速的查詢方法呢?
解法
1. 取得該 Visualforce Page的 Id
SELECT Id, Name FROM ApexPage WHERE Name = 'MyVFPage'
2. 拿 Visualforce Page 的 Id 再去 SetupEntityAccess query
SELECT Id, ParentId, SetupEntityId, SetupEntityType FROM SetupEntityAccess
WHERE SetupEntityId = '<MyVFPage Id>'
此時的 ParentId 即是答案,是包含了該 page access 權限的所有 Permission Set/Profile。
但 Id 不易閱讀理解,可以再做下一步驟取得 Name。
3. 拿 0PS 開頭的 Id 去 PermissionSet query,即可得到名稱。
SELECT Description, Id, Name Profile.name, Type FROM PermissionSet
WHERE Id IN ('0PSXXXXXXXXXXXXXXX', '0PSXXXXXXXXXXXXXXX', '0PSXXXXXXXXXXXXXXX')
留言
張貼留言