-
-
Save phpdave/b3931846becc2fc76885f66e31a1d865 to your computer and use it in GitHub Desktop.
Sanity check your org's CRUD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
String DEBUG_TEMPLATE = 'C:[C] R:[R] U:[U] D:[D] MA:[MA] RA:[RA] | [PROFILE_NAME] | [OBJECT_NAME]'; | |
String TRUE_TEMPLATE = '[X]'; // do not use space, horizontal char alignment will be off | |
String FALSE_TEMPLATE = '[_]'; // same | |
Integer PROFILE_NAME_MAX_LENGTH; | |
// Grab the max chars of each, so we can get an evenly formatted / spaced output later | |
List<Integer> nameLengths = new List<Integer>(); | |
for (Profile profile : [SELECT Name FROM Profile]) { | |
nameLengths.add(profile.Name.length()); | |
} | |
nameLengths.sort(); | |
PROFILE_NAME_MAX_LENGTH = nameLengths[nameLengths.size() -1]; | |
System.debug('CRUD SCRIPT: PROFILE_NAME_MAX_LENGTH: '+PROFILE_NAME_MAX_LENGTH); | |
List<ObjectPermissions> perms = [ | |
SELECT | |
Parent.Profile.Name, | |
SObjectType, | |
PermissionsCreate, | |
PermissionsRead, | |
PermissionsEdit, | |
PermissionsDelete, | |
PermissionsModifyAllRecords, | |
PermissionsViewAllRecords | |
FROM | |
ObjectPermissions | |
WHERE | |
Parent.IsOwnedByProfile = true | |
ORDER BY | |
Parent.Profile.Name ASC, | |
SObjectType ASC | |
]; | |
for (ObjectPermissions perm : perms) { | |
// Deal with name and padding first | |
String profileName = perm.Parent.Profile.Name; | |
while (profileName.length() < PROFILE_NAME_MAX_LENGTH) { | |
// FYI, it's hard to find a character that will "smooth" out | |
// and "right justify" due to chars left of it being different horizontal lengths | |
profileName += '_'; | |
} | |
String THIS_TEMPLATE = DEBUG_TEMPLATE.replace('[PROFILE_NAME]', profileName); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[OBJECT_NAME]', perm.SObjectType); | |
// Then go back to the beginning | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[C]', perm.PermissionsCreate ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[R]', perm.PermissionsRead ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[U]', perm.PermissionsEdit ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[D]', perm.PermissionsDelete ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[MA]', perm.PermissionsModifyAllRecords ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
THIS_TEMPLATE = THIS_TEMPLATE.replace('[RA]', perm.PermissionsViewAllRecords ? TRUE_TEMPLATE : FALSE_TEMPLATE); | |
// And here we go | |
System.debug('CRUD SCRIPT: '+THIS_TEMPLATE); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment