Saturday, June 20, 2020

Retrieve Permission Set Access using standard Salesforce objects



1. Query to retrieve Object Level Permissions

SELECT Id, ParentId, SobjectType, PermissionsCreate, PermissionsRead
, PermissionsEdit, PermissionsDelete, PermissionsViewAllRecords
, PermissionsModifyAllRecords, CreatedDate, CreatedById, LastModifiedDate
, LastModifiedById, SystemModstamp from objectpermissions
where parent.name = 'PERMISSION_SET_NAME_HERE'

2. Query to retrieve Field Level Permissions

SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, 
PermissionsRead, SystemModstamp from fieldpermissions
where parent.name = 'PERMISSION_SET_NAME_HERE'

3. Query to Retrieve Apex/Visualforce Page/Tab level Access
SELECT Id, ParentId, SetupEntityId, SetupEntityType, SystemModstamp 

FROM SetupEntityAccess

WHERE parent.name = 'PERMISSION_SET_NAME_HERE'

4. Query All system permissions (add all columns from object as needed)

SELECT Id, PermissionsModifyAllData from permissionset 

where name='PERMISSION_SET_NAME_HERE'


Retrieve Profile using Standard Salesforce Objects



Profiles

1. Query to retrieve Object Level Permissions

SELECT Id, ParentId, SobjectType, PermissionsCreate, PermissionsRead
, PermissionsEdit, PermissionsDelete, PermissionsViewAllRecords
, PermissionsModifyAllRecords, CreatedDate, CreatedById, LastModifiedDate
, LastModifiedById, SystemModstamp
FROM ObjectPermissions
WHERE ParentId IN (
  SELECT Id
  FROM PermissionSet
  WHERE Profile.Name  = 'PROFILE_NAME_HERE'
)

2. Query to retrieve Field Level Permissions

SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, 
PermissionsRead, SystemModstamp
FROM FieldPermissions
WHERE ParentId IN ( SELECT Id FROM PermissionSet
WHERE Profile.Name = 'PROFILE_NAME_HERE')

3. Query to Retrieve Apex/Visualforce Page/Tab/App level Access
SELECT Id, ParentId, SetupEntityId, SetupEntityType, SystemModstamp 

FROM SetupEntityAccess

WHERE ParentId IN (

SELECT Id

FROM PermissionSet

WHERE Profile.Name = 'PROFILE_NAME_HERE'

)
4. Retrieve system permissions(Add other system permissions in select clause as needed)

SELECT Id, PermissionsModifyAllData from permissionset 

where id in ( SELECT Id FROM PermissionSet

WHERE Profile.Name = 'Profile Name')