Berechtigung auf einzelne Datensätze wie z.B. Accounts für einen bestimmten Benutzer kann komfortabel mit Hilfe von UserRecordAccess berechnet werden.
Es ist allerdings darauf zu achten, dass die Anzahl der abgefragten Datensätze limitiert ist.
Das Limit ist von Salesforce auf 200 gesetzt.
Use Case:
Visualforce Page enthält ein Suchformular für Accounts. Suchmaske wird vom Außendienst vor der Anlage neuer Accounts benutzt, um Duplikate zu vermeiden.
Unabhängig von der Berechtigung auf die einzelnen Datensätze (private / public), werden die Namen und Adressen der gefundenen Accounts auf der Seite als Suchergebnisse dargestellt.
Abhängig von der Berechtigung hinsichtlich der gefundenen Accounts ist der Link "Öffnen" sichtbar/unsichtbar.
Es muss sichergestellt werden, dass die Suche max. 200 Datensätze liefert, um den Berechtigungsaspekt "sauber" zu verarbeiten.
Mit try-catch zusätzlich alle Modalitäten abfangen.
Der catch Block wirft einen Fehler, wenn die max. Anzahl von 200 überschritten ist.
Es ist allerdings darauf zu achten, dass die Anzahl der abgefragten Datensätze limitiert ist.
Das Limit ist von Salesforce auf 200 gesetzt.
Use Case:
Visualforce Page enthält ein Suchformular für Accounts. Suchmaske wird vom Außendienst vor der Anlage neuer Accounts benutzt, um Duplikate zu vermeiden.
Unabhängig von der Berechtigung auf die einzelnen Datensätze (private / public), werden die Namen und Adressen der gefundenen Accounts auf der Seite als Suchergebnisse dargestellt.
Abhängig von der Berechtigung hinsichtlich der gefundenen Accounts ist der Link "Öffnen" sichtbar/unsichtbar.
Es muss sichergestellt werden, dass die Suche max. 200 Datensätze liefert, um den Berechtigungsaspekt "sauber" zu verarbeiten.
Mit try-catch zusätzlich alle Modalitäten abfangen.
Der catch Block wirft einen Fehler, wenn die max. Anzahl von 200 überschritten ist.
try {
// find accounts
.....
// get user CRUD access for all found
accounts
for(UserRecordAccess ura :[SELECT RecordId, HasReadAccess, HasEditAccess, HasDeleteAccess
FROM UserRecordAccess
WHERE UserId=:idCurrentUser AND RecordId IN:setAccountIDs]){
....
}
}catch (Exception e) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'ERROR: ' + e.getMessage()));
}
Kommentare
Kommentar veröffentlichen