Documentation

UADフレームワークの追加

Liferayのユーザー関連データ(UAD)管理ツールでユーザーデータを管理・削除することができます。 本ツールは、Liferayの多くのアプリケーション(ブログ、ドキュメントとメディア、掲示板など)ですぐに利用できます。 このフレームワークは、お客様のカスタムアプリケーションに適用することも可能です。

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

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

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

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29。

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

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

  1. Download and unzip UAD Framework .

    curl https://learn.liferay.com/dxp/latest/ja/users-and-permissions/developer-guide/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コンテナコンソールでデプロイを確認します。

    STARTED com.acme.h6d2.api_1.0.0 [1433]
    STARTED com.acme.h6d2.service_1.0.0 [1434]
    STARTED com.acme.h6d2.uad_1.0.0 [1435]
    STARTED 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ポートレットに追加されたユーザーのデータを表示、匿名化、削除することができます。

サービスモデルの定義の変更

このチュートリアルでは、サービスビルダーを使用して作成したアプリケーションが動作していることを前提としています。 UADを有効にするには、まず、次のようにエンティティを変更します。

  1. -service フォルダにあるservice.xml ファイルを開いてください。

  2. UADを有効にするentity パラメータには2つあります。

    entity 属性

    Description

    uad-application-name

    エンティティタイプが所属するアプリケーションの名前を指定します。

    uad-package-path

    生成されたUADクラスのパッケージパスを指定します。

    	<entity local-service="true" name="H6D2Entry" remote-service="false" uad-application-name="H6D2" uad-package-path="com.acme.h6d2" uuid="true">
    
  3. 以下のデータフィールドがまだ定義されていない場合は、追加してください。

    <!-- Group instance -->
    
    <column name="groupId" type="long" />
    
    <!-- Audit fields -->
    
    <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フレームワークには、ユーザーデータを追跡し、匿名化する上記のフィールドが必要です。

  4. 次に、匿名化するデータフィールドを指定します。 これは、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

Make sure to include the -dsannotations-options: inherit annotation. OSGi service component classes inherit OSGi declarative services annotations from their class hierarchy.

  1. Create a build.gradle file for the module.

    dependencies {
    	compileOnly group: "com.liferay.portal", name: "release.portal.api"
    	compileOnly project(":h6d2-api")
    }
    

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

  2. モジュールの -service フォルダに戻り、Service Builder を実行して UAD モジュールを生成してください。

    ../gradlew buildService
    

    出力:

    > Task :h6d2-service:buildService
    Building H6D2Entry
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/anonymizer/BaseH6D2EntryUADAnonymizer.java
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/exporter/BaseH6D2EntryUADExporter.java
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/anonymizer/H6D2EntryUADAnonymizer.java
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/exporter/H6D2EntryUADExporter.java
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/display/BaseH6D2EntryUADDisplay.java
    Writing ../h6d2-uad/src/main/java/com/acme/h6d2/uad/display/H6D2EntryUADDisplay.java
    Writing src/main/resources/service.properties
    Writing ../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 Portletには_h6d2EntryLocalServiceと呼ばれるH6D2EntryLocalService フィールドとaddH6D2Entryと呼ばれるアクション処理メソッドがあります。 addH6D2Entryメソッドは H6D2EntryLocalServiceaddH6D2Entryメソッドを呼び、 ActionRequestから受け取ったデータフィールドを渡しています。

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

<h5>Add H6D2 Entry</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>

ActionRequestactionURL と共に送信すると、ポートレットの addH6D2Entry メソッドを呼び出せるようになります。

追加情報