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

留言

這個網誌中的熱門文章

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

Visual Studio Code 常忘功能 VSC FAQ