Documentation

ユーザーアカウントAPIの基本

コントロールパネルから ユーザーの追加と管理 ができますが、LiferayのREST APIを利用することもできます。 これらのサービスを呼び出して、ユーザーの追加、編集、削除を行うことができます。

まず、新しいユーザーを追加します。

ユーザーの追加

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

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.29-ga29。

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

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

  1. Download and unzip User Account API Basics .

    curl https://learn.liferay.com/dxp/latest/ja/users-and-permissions/developer-guide/liferay-y6q4.zip -O
    
    unzip liferay-y6q4.zip
    
  2. cURLスクリプトを使用して、Liferayインスタンスに新しいUserを追加します。 コマンドラインで、 curl フォルダに移動します。 User_POST_ToInstance.sh スクリプトを実行します。

    ./User_POST_ToInstance.sh
    

    JSONレスポンスは、新しいUserが追加されたことを示しています。

    {
        "additionalName" : "",
        "alternateName" : "able",
        "birthDate" : "1977-01-01T00:00:00Z",
        "customFields" : [ ],
        "dashboardURL" : "",
        "dateCreated" : "2021-05-19T16:04:46Z",
        "dateModified" : "2021-05-19T16:04:46Z",
        "emailAddress" : "[email protected]",
        "familyName" : "Foo",
        "givenName" : "Able",
        "id" : 39321,
        "jobTitle" : "",
        "keywords" : [ ],
        "name" : "Able Foo",
        "organizationBriefs" : [ ],
        "profileURL" : "",
        "roleBriefs" : [ {
            "id" : 20113,
            "name" : "User"
        } ],
        "siteBriefs" : [ {
            "id" : 20127,
            "name" : "Global"
        }, {
            "id" : 20125,
            "name" : "Guest"
        } ],
        "userAccountContactInformation" : {
            "emailAddresses" : [ ],
            "facebook" : "",
            "jabber" : "",
            "postalAddresses" : [ ],
            "skype" : "",
            "sms" : "",
            "telephones" : [ ],
            "twitter" : "",
            "webUrls" : [ ]
        }
    }%   
    

    コントロールパネルで、新しく追加されたユーザーを確認します。 ユーザーの id の番号を後のコマンドのためにメモしておきます。

    コントロールパネルに追加されたユーザーを参照してください。

  3. RESTサービスは、Javaクラスで呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  4. User_POST_ToInstance クラスを以下のコマンドで実行します。

    java -classpath .:* User_POST_ToInstance
    

    コントロールパネルで、別のユーザーが追加されていることを確認します。

    コントロールパネルに、もう一人のユーザーが追加されました。

cURLコマンドとJavaクラスの仕組みをご覧ください。

cURLコマンドの検証

User_POST_ToInstance.sh スクリプトは、cURLコマンドでRESTサービスを呼び出します。

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts" \
	-d "{\"alternateName\": \"Able\", \"emailAddress\": \"[email protected]\", \"familyName\": \"Foo\", \"givenName\": \"Able\"}" \
	-u "[email protected]:learn"

コマンドの引数は次のとおりです。

引数

説明

-H "Content-Type: application/json"

リクエストボディのフォーマットがJSONであることを示します。

-X POST

指定されたエンドポイントで起動するHTTPメソッド

"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts"

RESTサービスのエンドポイント

-d "{\"alternateName\": \"Able\", \"emailAddress\": \"able@liferay.com\", \"familyName\": \"Foo\", \"givenName\": \"Able\"}"

お客様が掲載を希望するデータ

-u "test@liferay.com:learn"

基本的な認証情報

注釈

ここでは、デモンストレーションの目的で基本認証を使用しています。 本番環境では、 OAuth2 を使ってユーザーを認証する必要があります。

他のcURLコマンドも同様のJSON引数を使用します。

Javaクラスを調べる

User_POST_ToInstance.java クラスは、ユーザー関連サービスを呼び出して、ユーザーを追加します。

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	UserAccount userAccount = userAccountResource.postUserAccount(
		new UserAccount() {
			{
				alternateName = "Baker";
				emailAddress = "[email protected]";
				familyName = "Foo";
				givenName = "Baker";
			}
		});

	System.out.println(userAccount);
}

このクラスは、わずか3行のコードでRESTサービスを呼び出します。

行(省略形)

説明

UserAccountResource.Builder builder = ...

UserAccountResourceサービスインスタンスを生成するためのBuilderを取得します。

UserAccountResource userAccountResource = builder.authentication(...).build()

ベーシック認証を指定し、 UserAccountResources サービスインスタンスを生成します。

UserAccount userAccount = userAccountResource.postUserAccount(...)

userAccountResource.postUserAccount メソッドを呼び出し、データをpostに渡します。

プロジェクトには、依存関係としてcom.liferay.headless.admin.user.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。

注釈

mainメソッドのコメントでは、クラスの実行を実演しています。

他のJavaクラスの例はこれと似ていますが、異なる UserAccountResource メソッドを呼び出しています。

重要

サービスの詳細は、 UserAccountResource を参照してください。

以下は、cURLとJavaを使って、他のUser RESTサービスを呼び出す例です。

インスタンスユーザーの取得

以下のcURLとJavaのコマンドで全ユーザーのリストを取得します。

Users GET FromInstance.sh

コマンド:

./Users_GET_FromInstance.sh

コード:

curl \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts" \
	-u "[email protected]:learn"

Users GET FromInstance.java

コマンド:

java -classpath .:* Users_GET_FromInstance

コード:

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	Page<UserAccount> page = userAccountResource.getUserAccountsPage(
		null, null, Pagination.of(1, 2), null);

	System.out.println(page);
}

JSON レスポンスには、そのインスタンスのすべての Users がリストアップされます。

ユーザーの取得

以下のcURLとJavaコマンドで特定のUserを取得します。 なお、 1234 は、ユーザーのIDに置き換えてください。

User GET ById.sh

コマンド:

./User_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts/${1}" \
	-u "[email protected]:learn"

User GET ById.java

コマンド:

java -classpath .:* -DuserId=1234 User_GET_ById

コード:

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	UserAccount userAccount = userAccountResource.getUserAccount(
		Long.valueOf(System.getProperty("userId")));

	System.out.println(userAccount);
}

User は JSON レスポンスで返されます。

ユーザーへのパッチ

以下のcURLとJavaコマンドで、既存のUserの部分編集を行います。 なお、 1234 は、ユーザーのIDに置き換えてください。

User PATCH ById.sh

コマンド:

./User_PATCH_ById.sh 1234

コード:

curl \
	-H "Content-Type: application/json" \
	-X PATCH \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts/${1}" \
	-d "{\"familyName\": \"Bar\"}" \
	-u "[email protected]:learn"

User PATCH ById.java

コマンド:

java -classpath .:* -DuserId=1234 User_PATCH_ById

コード:

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	UserAccount userAccount = userAccountResource.patchUserAccount(
		Long.valueOf(System.getProperty("userId")),
		new UserAccount() {
			{
				familyName = "Bar";
			}
		});

	System.out.println(userAccount);
}

この例では、AbleとBakerの名字がFooからBarに変わっていることに注意してください。

ユーザーの配置

以下のcURLとJavaコマンドで、既存のUserを完全に上書きします。 なお、 1234 は、ユーザーのIDに置き換えてください。

User PUT ById.sh

コマンド:

./User_PUT_ById.sh 1234

コード:

curl \
	-H "Content-Type: application/json" \
	-X PUT \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts/${1}" \
	-d "{\"alternateName\": \"Able\", \"emailAddress\": \"[email protected]\", \"familyName\": \"Goo\", \"givenName\": \"Able\"}" \
	-u "[email protected]:learn"

User PUT ById.java

コマンド:

java -classpath .:* -DuserId=1234 User_PUT_ById

コード:

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	UserAccount userAccount = userAccountResource.putUserAccount(
		Long.valueOf(System.getProperty("userId")),
		new UserAccount() {
			{
				alternateName = "Baker";
				emailAddress = "[email protected]";
				familyName = "Goo";
				givenName = "Baker";
			}
		});

	System.out.println(userAccount);
}

なお、この例では、以前のデータがAble GooとBaker Gooに置き換えられています。

これまでのユーザーデータは、パッチサービスに置き換えられています。

ユーザーの削除

以下のcURLおよびJavaコマンドで既存のUserを削除します。 なお、 1234 は、ユーザーのIDに置き換えてください。

User DELETE ById.sh

コマンド:

./User_DELETE_ById.sh 1234

コード:

curl \
	-X DELETE \
	"http://localhost:8080/o/headless-admin-user/v1.0/user-accounts/${1}" \
	-u "[email protected]:learn"

User DELETE ById.java

コマンド:

java -classpath .:* -DuserId=1234 User_DELETE_ById

コード:

public static void main(String[] args) throws Exception {
	UserAccountResource.Builder builder = UserAccountResource.builder();

	UserAccountResource userAccountResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	userAccountResource.deleteUserAccount(
		Long.valueOf(System.getProperty("userId")));
}

ユーザー[Able Goo]と[Baker Goo]は削除されました。

追加情報

APIエクスプローラー でユーザー関連のRESTサービスの一覧を確認できます。