ユーザーアカウントAPIの基本¶
コントロールパネルから ユーザーの追加と管理 ができますが、LiferayのREST APIを利用することもできます。 これらのサービスを呼び出して、ユーザーの追加、編集、削除を行うことができます。
まず、新しいユーザーを追加します。
ユーザーの追加¶
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.55-ga55。
http://localhost:8080でLiferayへのサインインします。 メールアドレス_test@liferay.com_とパスワード_test_を使用してください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、以下の手順を実行します。
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
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
の番号を後のコマンドのためにメモしておきます。RESTサービスは、Javaクラスで呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java
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"
ここでは、コマンドの引数を紹介します。
引数 |
説明 |
---|---|
|
リクエストボディのフォーマットがJSONであることを示します。 |
|
指定されたエンドポイントで起動するHTTPメソッド |
|
RESTサービスのエンドポイント |
|
お客様が掲載を希望するデータ |
|
基本的な認証情報 |
注釈
ここでは、デモのためにベーシック認証を使用しています。 本番環境では、 OAuth2 を使ってユーザーを認証する必要があります。 OAuth2を利用したReactアプリケーションのサンプルは、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サービスを呼び出します。
行(省略形) |
説明 |
---|---|
|
|
|
ベーシック認証を指定し、 |
|
|
プロジェクトには、依存関係として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();
System.out.println(
userAccountResource.getUserAccount(
Long.valueOf(System.getProperty("userId"))));
}
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サービスの一覧を確認できます。