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 .
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.
000386023

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.