Loading

Check User access for records

Veröffentlichungsdatum: Jan 16, 2026
Beschreibung
The UserRecordAccess table provides valuable information about your Organization's User's access to a specific set of Records. You may find that you want to query the table based on a specific User. 

 
Lösung

Determine Specific User Access: 

To determine a specific user’s access to a record, you can use one of the following approaches:

  • Query the UserRecordAccess object by providing both the Record ID and the User ID, or

  • Query the Share object for the specific Salesforce object you are evaluating.

Use the example queries below as a reference.

Example Query (Share Object):

SELECT AccountAccessLevel, AccountId, CaseAccessLevel, ContactAccessLevel, Id, IsDeleted,
       LastModifiedById, LastModifiedDate, OpportunityAccessLevel, RowCause, UserOrGroupId
FROM AccountShare
WHERE AccountId = 'account_id'

Example Query (UserRecordAccess Object):

SELECT RecordId, HasReadAccess, HasEditAccess, HasDeleteAccess, HasTransferAccess,
       HasAllAccess, MaxAccessLevel
FROM UserRecordAccess
WHERE RecordId = 'record_id' AND UserId = 'user_id'

See more examples and an explanation on this page .




Filter table by a specific User :

NOTE: The code provided is an example. You'll need to review and make modifications for your organization.

List <Account> a = new List <Account>(); 
List <User> u = new List <User>(); 
List <ID> sRecordIDs = new List <ID>(); 
a = [select id from Account]; system.debug('>>>'+a.size()); 
u = [select id from User]; 
system.debug('>>>'+u.size()); 
for(Account c : a) 
{ 
    UserRecordAccess i =null; i = [SELECT RecordID FROM UserRecordAccess 
                                    WHERE UserId = '00590000001OZ5bAAG' 
                                    AND RecordID=: c.id AND HasReadAccess = True]; 
    sRecordIDs.add(i.id); 
} 
system.debug('>>>'+ sRecordIDs.size()); 
system.debug('>>>'+ sRecordIDs); 

Additionally you can now use stripInaccesible() . This method checks the source records for fields that don’t meet the field-level security check for the current user and creates a return list of sObjects. To ensure secure processing Apex, this method can also be used to remove inaccessible fields from sObjects before a DML operation to avoid exceptions and to sanitize sObjects.

Nummer des Knowledge-Artikels

000386023

 
Laden
Salesforce Help | Article