Ich habe mich in den letzten Tagen etwas ausführlicher mit Salesforce Communities in Kombination mit der API beschäftigt. Ein Problem dabei war, den richtigen Endpoint zu berechnen, wie im letzten Beitrag beschrieben API im Salesforce Partner Portal.
Um die Weichen im Code für Community Benutzer einzubauen, muss während der Laufzeit berechnet werden, in welchem Context sich der aktuell eingeloggte Benutzer befindet. Dabei muss man sich zwangsweise mit den Fragen folgender Art beschäftigen:
Antworten auf die Fragen 2 und 3:
Um die Weichen im Code für Community Benutzer einzubauen, muss während der Laufzeit berechnet werden, in welchem Context sich der aktuell eingeloggte Benutzer befindet. Dabei muss man sich zwangsweise mit den Fragen folgender Art beschäftigen:
- ist der eingeloggte Benuter ein Community Benutzer?
- ob und welche Community ist gerade aktiv?
- wie sieht die definierte Community URL aus?
private Boolean isCommunityUser(){ Boolean bIsCommunityUser = false; String sUserType = UserInfo.getUserType(); sUserType = sUserType.toUpperCase(); if(sUserType == 'STANDARD') bIsCommunityUser = false; if(sUserType == 'PARTNER') bIsCommunityUser = true; if(sUserType == 'POWERPARTNER') bIsCommunityUser = true; if(sUserType == 'CSPLITEPORTAL') bIsCommunityUser = true; if(sUserType == 'CUSTOMERSUCCESS') bIsCommunityUser = true; if(sUserType == 'POWERCUSTOMERSUCCESS') bIsCommunityUser = true; if(sUserType == 'CSNONLY') bIsCommunityUser = false; return bIsCommunityUser; }
Antworten auf die Fragen 2 und 3:
String baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); if(isCommunityUser()){ // Antwort auf die Frage 2 String communityId = Network.getNetworkId(); if(communityId!=null){ // Antwort auf die Frage 3 ConnectApi.Community cm = connectapi.Communities.getCommunity(communityId); baseUrl = cm.siteUrl; } }
Kommentare
Kommentar veröffentlichen