1. ユーザー サインイン スクリプト

ユーザー サインイン スクリプトの例

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

これは、ユーザーが Sitecore Content Hub™ にログインするときに実行されるユーザー サインイン スクリプトの例です。ユーザーの最後のログイン プロバイダーをユーザーのオブジェクトに追加します。

警告
  • スクリプトのユーザー検証に一貫性がない場合、またはその他のランタイム エラーがある場合、ユーザー サインイン スクリプトによってユーザーがロックアウトされる可能性があります。これにはスーパーユーザー管理者も含まれます。
  • このロックアウトを解決するには、REST API または SDK を使用してスクリプトを無効にします。REST API を使用してスクリプトを非アクティブ化するには、PUT 要求を送信して、ブール値 "M.Script.Enabled" を変更する必要があります。

ユース ケース

  1. ユーザーが Sitecore Content Hub™ ログインします。
  2. スクリプトは、ユーザーのログイン プロバイダーをユーザーのオブジェクトに追加します (ログイン プロバイダーが外部の場合)。

スクリプト

if(Context.AuthenticationSource != AuthenticationSource.External){
return;
}

var provider = Context.ExternalUserInfo.Provider ?? "None";

var prop = await Context.User.GetPropertyAsync<ICultureInsensitiveProperty>("LastLoginProvider");
prop.SetValue(provider);

await MClient.Entities.SaveAsync(Context.User);

スクリプトの説明

  1. 外部ログインのみを処理します。

    if(Context.AuthenticationSource != AuthenticationSource.External){
    return;
    }
  2. コンテキストからユーザーのプロバイダーを取得します。

    var provider = Context.ExternalUserInfo.Provider ?? "None";
  3. ユーザーのオブジェクトの「LastLoginProvider」プロパティを取得します。

    var prop = await Context.User.GetPropertyAsync<ICultureInsensitiveProperty>("LastLoginProvider");
  4. 「LastLoginProvider」プロパティを外部プロバイダーに設定します (内部の場合は「None」)。

    prop.SetValue(provider);
  5. ユーザー エンティティを保存します。

    await MClient.Entities.SaveAsync(Context.User);

セットアップ

  1. User 定義に、LastLoginProvider を名前とする string プロパティを作成します。

  2. 上記のソース コードを使用したユーザー サインイン スクリプトを作成し、パブリッシュして有効にします。

スクリプトを無効にする

次のサンプル スニペットを使用して、Web SDK を使用するスクリプトを無効にします。


var loadConfig = new EntityLoadConfiguration(
CultureLoadOption.None,
new PropertyLoadOption(
ScriptingConstants.Scripting.Properties.Enabled),
RelationLoadOption.None);

var script = await MClient.Entities.GetAsync(<your script id>, loadConfig).ConfigureAwait(false);
script?.SetPropertyValue("M.Script.Enabled", false);

await MClient.Entities.SaveAsync(script).ConfigureAwait(false);
この記事を改善するための提案がある場合は、 お知らせください!