User Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

UADフレームワークの追加

Liferayの「ユーザー関連データ(UAD)」管理ツールを使用すると、ユーザーデータの管理や削除を行うことができます。 このツールは、Liferayの多くのアプリケーション(ブログ、ドキュメントとメディア、メッセージボードなど)ですぐに利用できます。 このフレームワークは、お客様独自のアプリケーションにも適用可能です。

サービスビルダー を使用すると、このタスクが簡単になります。 サービスビルダーがアプリケーションのためにUADを有効にするために必要なコードを自動的に生成する方法については、以下の例を参照してください。

サンプルコードをダウンロード

Liferay DXP の新しいインスタンスを起動するには、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts

http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learn に変更してください。

次に、以下の手順に従います。

  1. UAD Framework をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-h6d2.zip -O
    
    unzip liferay-h6d2.zip
    
  2. モジュールのルートディレクトリから、ビルドとデプロイを実行します。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    
    注記

    このコマンドは、デプロイされたjarファイルをDockerコンテナの/opt/liferay/osgi/modulesにコピーするのと同じです。

  3. Liferay Dockerコンテナコンソールでデプロイメントを確認してください。

    com.acme.h6d2.api_1.0.0 [1433]
    開始 com.acme.h6d2.service_1.0.0 [1434]
    開始 com.acme.h6d2.uad_1.0.0 [1435]
    開始 com.acme.h6d2.web_1.0.0 [1436]
    
  4. ブラウザで https://localhost:8080 を開いてください。

  5. H6D2ポートレットをページに追加します。 サンプルポートレットは「サンプルウィジェット」の項目にあります。

    H6D2ポートレットをページに追加します。

  6. テスト用に新しいユーザー を作成します。

  7. 新規ユーザーとしてログインし、H6D2ポートレットにコンテンツを追加してください。

  8. 管理者として再度ログインし、 コントロール パネル → ユーザー → ユーザーと組織 に移動します。

  9. 新しいユーザーの アクション (Action) → 個人データの削除 をクリックします。 ユーザーの無効化を確認するには、 OK をクリックしてください。

  10. UAD管理ツールが表示されます。 H6D2ポートレットでは、新規ユーザーが追加したデータを表示、匿名化、または削除することができます。

    H6D2ポートレットに追加されたユーザーデータを表示、匿名化、または削除します。

サービスモデル定義を変更する

このチュートリアルは、Service Builderを使用して作成した動作するアプリケーションがあることを前提としています。 UADを有効にするには、まずエンティティに以下の変更を加えてください。

  1. service.xml ファイルを開き、 -service フォルダーを開きます。

  2. UADを有効にするには、2つの エンティティ パラメータが必要です。

    エンティティ 属性説明
    uadアプリケーション名エンティティタイプが属するアプリケーションの名前を指定します。
    uadパッケージパス生成されたUADクラスのパッケージパスを指定します。
<entity local-service="true" name="H6D2Entry" remote-service="false" uad-application-name="H6D2" uad-package-path="com.acme.h6d2" uuid="true">
  1. まだ定義されていない場合は、以下のデータフィールドを追加してください。

    <!-- グループインスタンス -->
    
    <column name="groupId" type="long" />
    
    <!-- 監査フィールド -->
    
    <column name="companyId" type="long" />
    <column name="userId" type="long" />
    <column name="userName" type="String" />
    <column name="createDate" type="Date" />
    <column name="modifiedDate" type="Date" />
    

    UADフレームワークでは、ユーザーデータの追跡と匿名化のためにこれらのフィールドが必要です。

  2. 次に、匿名化するデータフィールドを指定します。 これは、2つの属性を使用して行われます。

    • uad-anonymize-field-name=[fieldName] 属性は、UAD 自動匿名化プロセスで値が匿名ユーザーの値に置き換えられるフィールドを示します。 例えば、 uad-anonymize-field-name=fullName と設定すると、そのフィールドの値が匿名ユーザーのフルネームに置き換えられます。 匿名ユーザーの詳細については、 匿名ユーザーの設定 を参照してください。

    • uad-nonanonymizable="true" 属性は、自動的に匿名化されず、管理者が確認する必要があるデータを示します。

<column name="userName" type="String" uad-anonymize-field-name="fullName" />

UADモジュールを生成する

  1. -service フォルダーから移動し、新しい -uad フォルダーを作成します。

  2. モジュール用に bnd.bnd ファイルを作成します。

Bundle-Name: Liferay H6D2 UAD
Bundle-SymbolicName: com.acme.h6d2.uad
Bundle-Version: 1.0.0
-dsannotations-options: inherit

-dsannotations-options: inherit アノテーションを含めるようにしてください。 OSGi サービス コンポーネント クラスは、クラス階層から OSGi 宣言型サービス アノテーションを継承します。

  1. モジュール用の build.gradle ファイルを作成します。
dependencies {
	compileOnly group: "com.liferay.portal", name: "release.dxp.api"
	compileOnly project(":h6d2-api")
}

プロジェクトの -api モジュールを含め、必要な依存関係をすべて追加してください。

  1. モジュールの -service フォルダーに戻り、Service Builder を実行して UAD モジュールを生成します。

    ../gradlew buildService
    

    出力:

    > タスク :h6d2-service:buildService
    H6D2Entry を構築中
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/anonymizer/BaseH6D2EntryUADAnonymizer.java を書き込み中
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/exporter/BaseH6D2EntryUADExporter.java を書き込み中
    書き込み中../h6d2-uad/src/main/java/com/acme/h6d2/uad/anonymizer/H6D2EntryUADAnonymizer.java
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/exporter/H6D2EntryUADExporter.java を書き込み中
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/display/BaseH6D2EntryUADDisplay.java を書き込み中
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/display/H6D2EntryUADDisplay.java を書き込み中
    src/main/resources/service.properties を書き込み中
    ../h6d2-uad/src/main/java/com/acme/h6d2/uad/constants/H6D2UADConstants.java を書き込み中
    

ポートレットを変更する

フォームからアプリケーション固有のデータ フィールドを渡す場合は、 service.xml ファイルに追加したユーザー関連のデータ フィールドも渡す必要があります。

public class H6D2Portlet extends MVCPortlet {

	public void addH6D2Entry(
			ActionRequest actionRequest, ActionResponse actionResponse)
		throws PortalException {

		ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
			WebKeys.THEME_DISPLAY);

		User user = _portal.getUser(actionRequest);

		H6D2Entry h6d2Entry = _h6d2EntryLocalService.createH6D2Entry(
			_counterLocalService.increment());

		h6d2Entry.setCompanyId(user.getCompanyId());
		h6d2Entry.setUserId(user.getUserId());
		h6d2Entry.setUserName(user.getFullName());

		h6d2Entry.setGroupId(themeDisplay.getSiteGroupId());

		h6d2Entry.setName(ParamUtil.getString(actionRequest, "name"));

		_h6d2EntryLocalService.addH6D2Entry(h6d2Entry);
	}

	@Reference
	private CounterLocalService _counterLocalService;

	@Reference
	private H6D2EntryLocalService _h6d2EntryLocalService;

	@Reference
	private Portal _portal;

}

H6D2 ポートレット には、 H6D2EntryLocalService というフィールド _h6d2EntryLocalService と、 addH6D2Entry というアクション処理メソッドがあります。 addH6D2Entry メソッドは、 H6D2EntryLocalServiceの addH6D2Entry メソッドを呼び出し、 ActionRequest から受け取ったデータ フィールドを渡します。

ポートレットの view.jsp には、ユーザーが ActionRequest で H6D2 ポートレット に送信できるフォームが含まれています。

<h5>H6D2 エントリを追加</h5>

<portlet:actionURL name="addH6D2Entry" var="addH6D2EntryURL" />

<aui:form action="<%= addH6D2EntryURL %>">
	<aui:input name="name" type="text" />

	<aui:button type="submit" value="submit" />
</aui:form>

ActionRequest を actionURL とともに送信すると、ポートレットの addH6D2Entry メソッドが呼び出されます。