快速查詢有哪些 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') 

留言

這個網誌中的熱門文章

Salesforce證照考試心得 (Administrator and Advanced Administrator)

ISC2 CC (Certified in Cybersecurity Certification) 考試心得