コミュニティユーザの判定方法についてです。SOQLクエリを実行する場合「AccountID」または「ContactID」に値が存在するかで判定することが可能です。また、「IsPortalEnabled」という項目でもチェックすることができます。
その他の方法として『UserType』項目を利用する方法があります。
UserTypeの種類
- Standard: ユーザライセンス。このユーザ種別には、Salesforce Platform と Salesforce Platform One ユーザライセンスが含まれます。表示ラベルは [標準] です。
- PowerPartner: パートナーであり、通常パートナーポータルまたはコミュニティでアプリケーションにアクセスするため、アクセス権が制限されているユーザ。表示ラベルは [パートナー] です。
- CSPLitePortal: 組織の顧客であり、カスタマーポータルまたはコミュニティでアプリケーションにアクセスするため、アクセス権が制限されているユーザ。表示ラベルは [大規模ポータル] です。
- CustomerSuccess: ユーザが組織の顧客であり、カスタマーポータルでアプリケーションにアクセスするため、アクセス権が制限されているユーザ。表示ラベルは [カスタマーポータルユーザ] です。
- PowerCustomerSuccess: ユーザが組織の顧客であり、カスタマーポータルでアプリケーションにアクセスするため、アクセス権が制限されているユーザ。表示ラベルは [カスタマーポータルマネージャ] です。
このライセンスタイプのユーザは、自分が直接所有するデータ、またはカスタマーポータルのロール階層で自分よりも下位に位置するユーザが所有するデータ、およびそのユーザと共有するデータを参照、編集できます。
- CsnOnly: アプリケーションへのアクセス権が Chatter に制限されているユーザ。このユーザ種別には、Chatter Free と Chatter モデレータユーザが含まれます。表示ラベルは [Chatter Free] です。
UserType項目の便利なところはUserInfo.getUserTypeで取得できることです。ログインユーザの情報がほしい場合は、SOQLクエリを実行せずに取得できます。
String userType = UserInfo.getUserType(); System.debug(userType);
もちろんSOQLクエリによる取得も可能です。
SELECT Name,UserType,AccountId,ContactId,IsPortalEnabled FROM User
小ネタですが、UserType項目は選択リスト型でtoLabelをつかった翻訳も可能です。
SELECT Name,toLabel(UserType),AccountId,ContactId,IsPortalEnabled FROM User
(UserTypeを翻訳する必要はほぼないと思いますが...)
コミュニティユーザの判定方法はこんな感じです。