tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:コミュニティユーザの判定方法

コミュニティユーザの判定方法についてです。SOQLクエリを実行する場合「AccountID」または「ContactID」に値が存在するかで判定することが可能です。また、「IsPortalEnabled」という項目でもチェックすることができます。
f:id:tyoshikawa1106:20160307111754p:plain


その他の方法として『UserType』項目を利用する方法があります。
f:id:tyoshikawa1106:20160307112118p:plain

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);

f:id:tyoshikawa1106:20160307112443p:plain:w400


もちろんSOQLクエリによる取得も可能です。

SELECT Name,UserType,AccountId,ContactId,IsPortalEnabled FROM User

f:id:tyoshikawa1106:20160307112621p:plain


小ネタですが、UserType項目は選択リスト型でtoLabelをつかった翻訳も可能です。

SELECT Name,toLabel(UserType),AccountId,ContactId,IsPortalEnabled FROM User

f:id:tyoshikawa1106:20160307112733p:plain

(UserTypeを翻訳する必要はほぼないと思いますが...)


コミュニティユーザの判定方法はこんな感じです。

ユーザオブジェクトについて