HeadlessSelfRegistrationHandler インターフェース
ヘッドレス登録フロー中にカスタマーユーザーおよびパートナーユーザーを作成します。
名前空間
使用方法
ヘッドレス登録フローでは、Salesforce を使用してユーザー認証やユーザーのデータアクセスを管理しながら、サードパーティアプリケーションのユーザー登録環境を制御できます。このフローを設定するときは、Auth.HeadlessSelfRegistrationHandler インターフェースを実装しているクラスにユーザーを追加します。このクラスは、ユーザーが自分の ID を検査した後に実行されます。ヘッドレス登録についての詳細は、アプリケーション種別に応じて「非公開クライアント向けのヘッドレスのパスワードを忘れた場合のフロー」または「公開クライアント向けのヘッドレスのパスワードを忘れた場合のフロー」を参照してください。
HeadlessSelfRegistrationHandler のメソッド
HeadlessSelfRegistrationHandler のメソッドは次のとおりです。
createUser(profileId, data, customUserDataMap, experienceId, password)
プラットフォーム外アプリケーションがヘッドレス登録 API に送信した情報を使用して User オブジェクトを返します。User オブジェクトは、組織のデータベースに挿入されていない新しいユーザーにすることも、既存のユーザーレコードを表すこともできます。新しい User オブジェクトの場合、Salesforce がユーザーレコードを挿入します。
署名
public User createUser(Id profileId, Auth.UserData data, String customUserDataMap, String experienceId, String password)
パラメーター
- profileId
- 型: Id
- 新規ユーザーに割り当てられるプロファイルの ID。
- data
- 型: Auth.UserData
- 名前やロケールなどのユーザーに関する情報を保存するクラス。
- customUserDataMap
- 型: String
- 登録時に渡されたカスタムユーザー情報を含む JSON オブジェクトの文字列表現。この文字列は、同等の Apex クラス構造にデシリアライズすることをお勧めします。アプリケーションの登録環境を構築するときに収集するカスタム情報を決定します。
- experienceId
- 型: String
- Experience Cloud サイト ID。
- password
- 型: String
- ユーザーのパスワード。
戻り値
型: User
HeadlessSelfRegistrationHandler の実装例
このクラス例は Auth.HeadlessSelfRegistrationHandler インターフェースを実装しています。このクラスでは、アプリケーションが Headless Registration API に送信した情報に基づいてユーザーが作成されます。作成されたユーザーは Experience Cloud で設定した新規ユーザー用のデフォルトプロファイルに関連付けられます。また、このユーザーの連絡先も作成され、アカウントに割り当てられます。
1global class ExampleHeadlessReg implements Auth.HeadlessSelfRegistrationHandler {
2
3 global User createUser(Id profileId, Auth.UserData data, String customUserDataMap, String experienceId, String password){
4 User u = new User();
5 u.ProfileId = profileId;
6
7 u = handleUnsetRequiredFields(u);
8 u.email = data.email;
9 Account a;
10 List<Account> accounts = [SELECT Id FROM account WHERE name=:social_account];
11 if(accounts.isEmpty())
12 {
13 a = new Account(name = social_account);
14 insert(a);
15 }else
16 a = accounts[0];
17 generateContact(u, a.Id);
18 u.languagelocalekey = UserInfo.getLocale();
19 u.localesidkey = UserInfo.getLocale();
20 u.emailEncodingKey = 'UTF-8';
21 u.timeZoneSidKey = UserInfo.getTimezone().getID();
22 return u;
23 }
24
25 private User handleUnsetRequiredFields(User u) {
26 return u;
27 }
28
29 // Method to construct a contact for a user
30 private void generateContact(User u, Id accountId) {
31 // Add logic here to build your own contact for the user
32 Contact c = new Contact();
33 c.accountId = accountId;
34 c.firstName = u.firstName;
35 c.lastName = u.lastName;
36 insert(c);
37 u.contactId = c.Id;
38
39 }
40
41 // Default implementation to try to provide uniqueness
42 private String generateAlias() {
43 String timeString = String.valueOf(CURRENT_TIME);
44 return timeString.substring(timeString.length() - 8);
45 }
46}