If a user has insufficient privileges to view an object, any Visualforce page that uses a controller to render that object will be inaccessible. To avoid this error, you should ensure that your Visualforce components will only render if a user has access to the object associated with the controller.
{!$ObjectType.objectname.accessible}
{!$ObjectType.Lead.accessible}
{!$ObjectType.MyCustomObject__c.accessible}
<apex:page standardController="Lead"> <apex:pageBlock rendered="{!$ObjectType.Lead.accessible}"> <p>This text will display if you can see the Lead object.</p> </apex:pageBlock> </apex:page>
<apex:page standardController="Lead"> <apex:pageBlock rendered="{!$ObjectType.Lead.accessible}"> <p>This text will display if you can see the Lead object.</p> </apex:pageBlock> <apex:pageBlock rendered="{! NOT($ObjectType.Lead.accessible) }"> <p>Sorry, but you cannot see the data because you do not have access to the Lead object.</p> </apex:pageBlock> </apex:page>