1

<EDIT>

My use case: Rather than showing "An insufficient privileges message" after clicking on a button, I want to hide/show the button using the apex code whether to display the button based on the user's assigned Custom Permissions, so that preventing users from getting an insufficient privilege message after the event.

</EDIT>

Is there a way to customize custom permissions for the custom objects? in the object.

What I'm trying to do is to add a new column in the Object Permission table as shown below called "Can Push" or whatever the name then let the Admin assign the access to that particular permission.

enter image description here

5
  • Can you go higher level? What are you trying to accomplish?
    – Adrian Larson
    Commented Jul 21, 2016 at 17:58
  • So on VFP we have couple of buttons that can be only accessible/available based on certain conditions so what I'm trying to do that if I can create the custom permission access in the above custom object permission, in that way will have all the access/permissions in one place.
    – Nick
    Commented Jul 21, 2016 at 18:18
  • Still not really clear what you are going for...am I headed in the right direction?
    – Adrian Larson
    Commented Jul 21, 2016 at 18:43
  • I have updated my question, please have a look
    – Nick
    Commented Jul 21, 2016 at 18:51
  • Are you looking for how to set Visualforce access? Or just how to infer it to control rendering?
    – Adrian Larson
    Commented Jul 21, 2016 at 19:07

1 Answer 1

5

If you want to check via Apex which pages the running user can access, you just need to hit up a few configuration objects:

Set<Id> assigned = new Map<Id, PermissionSet>([
    SELECT Id FROM PermissionSet WHERE Id IN (
        SELECT PermissionSetId FROM PermissionSetAssignment
        WHERE AssigneeId = :UserInfo.getUserId()
    )
]).keySet();
for (ApexPage page : [
    SELECT Name FROM ApexPage WHERE Name IN ('SiteLogin', 'CreateTask')
    AND Id IN (
        SELECT SetupEntityId FROM SetupEntityAccess
        WHERE SetupEntityType = 'ApexPage'
        AND ParentId IN :assigned
    )
]) system.debug(page.Name);

You could store a Set<String> accessiblePages collection and then inspect its contents to set properties like canAccessPage1, canAccessPage2, etc.


If you are trying to make Custom Permissions accessible in a Visualforce Page, the $Permission global variable actually tells you whether or not the running user has a specific Custom Permission assigned.

  1. Create a Custom Permission for each button you wish to control.
  2. Add them to Permission Sets as needed.
  3. Manage Assignments for those Permission Sets to select which users have access.

Then your Visualforce would look something like:

<apex:commandButton ... rendered="{!$Permission.CanAccessButton1}" />
<apex:commandButton ... rendered="{!$Permission.CanAccessButton2}" />
<apex:commandButton ... rendered="{!$Permission.CanAccessButton3}" />

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .