ロールAPIの基本
アプリケーション メニューから ロールを作成および管理 できますが、Liferay の REST API を使用することもできます。 ロールを管理するには、これらのサービスを呼び出します。
ユーザーを通常ロールに関連付ける
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
Roles API Basicsをダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-z3v5.zip -Ounzip liferay-z3v5.zip -
Users_GET_FromInstance を使用して、ユーザー ID のリストを取得します。 通常ロールに関連付けるユーザー ID をメモします。
-
すべてのロール ID のリストを取得するには、 Roles_GET_FromInstance を使用します。 関連付けるロール ID (
roleType: regular) をメモします。 たとえば、Analytics 管理者の通常ロール タイプなどです。 -
cURL スクリプトを使用して、ユーザーを通常のロールに関連付けます。 コマンドラインで、
curlフォルダに移動します。RolesAssociationUserAccount_POST_ToInstance.shスクリプトを実行します。1234を通常のロールの ID に置き換えます。5678をユーザーのIDに置き換えます。./RolesAssociationUserAccount_POST_ToInstance.sh 1234 5678 -
グローバル メニュー → コントロール パネル → ロールに移動します。 [通常の役割] タブで、ユーザーを関連付けるために使用した特定の役割をクリックします。 担当者 タブをクリックします。 ユーザーが選択したロールに関連付けられていることを確認します。

-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curlフォルダから、javaフォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java -
次のコマンドで
RoleUserAssociation_POST_ToInstance.javaクラスを実行します。java -classpath .:* -DroleId=1234 -DuserAccountId=5678 RoleUserAssociation_POST_ToInstance
cURLコマンドの検証
RolesAssociationUserAccount_POST_ToInstance.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
ここでは、コマンドの引数を紹介します。
| 引数 | 説明 |
|---|---|
-H "Content-Type: application/json" | リクエストボディのフォーマットがJSONであることを示します。 |
-X POST | 指定されたエンドポイントで起動するHTTPメソッド |
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}" | RESTサービスのエンドポイント |
-u "test@liferay.com:learn" | 基本的な認証情報 |
!!1 注記 ここではデモンストレーションの目的で基本認証が使用されています。 本番環境では、 OAuth2経由でユーザーを認証する必要があります。 OAuth2 を使用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。
他のcURLコマンドも同様のJSON引数を使用しています。
Javaクラスを調べる
RoleUserAssociation_POST_ToInstance.java クラスは、ロール関連のサービスを呼び出すことによって、ユーザーを通常のロールに関連付けました。
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.postRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")));
}
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
| 行(省略形) | 説明 |
|---|---|
RoleResource.Builder builder = ... | RoleResource サービス インスタンスを生成するための Builder を取得します。 |
RoleResource roleResource = builder.authentication(...).build(); | 基本認証を指定し、 RoleResource サービス インスタンスを生成します。 |
roleResource.postRoleUserAccountAssociation(...); | postRoleUserAccountAssociation メソッドを呼び出し、データを post に渡します。 |
プロジェクトには、依存関係としてcom.liferay.headless.admin.user.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。
メイン メソッドのコメントは、クラスの実行を示しています。
他の Java クラスの例もこれに似ていますが、異なる RoleResource メソッドを呼び出します。
サービスの詳細については、 RoleResource を参照してください。
以下は、cURL と Java を使用して他の Role REST サービスを呼び出す例です。
インスタンスからロールを取得する
次の cURL または Java コマンドを実行すると、ロールを一覧表示できます。
Roles_GET_FromInstance.sh
コマンド:
./Roles_GET_FromInstance.sh
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles" \
--user "test@liferay.com:learn"
Roles_GET_FromInstance.java
コマンド:
java -classpath .:* Roles_GET_FromInstance
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
Page<Role> role = roleResource.getRolesPage(Pagination.of(1, 2));
System.out.println(role);
}
インスタンスの ロール オブジェクトが JSON で表示されます。
役割を取得する
次の cURL または Java コマンドを使用して特定のロールを取得します。
インスタンス Role ID を取得するには、 Roles_GET_FromInstance.[java|sh] を使用します。
Roles_GET_ById.sh
コマンド:
./Roles_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}" \
--user "test@liferay.com:learn"
Roles_GET_ById.java
コマンド:
java -classpath .:* -DroleId=1234 Roles_GET_ById
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
roleResource.getRole(Long.valueOf(System.getProperty("roleId"))));
}
ロール フィールドが JSON に表示されます。
ユーザーをサイトロールに関連付ける
ユーザーを特定のサイト ロールに関連付けることができます。 1234 をロールの ID に置き換えます。 5678をサイトのIDに置き換えてください。 9012 をユーザーIDに置き換えます。
ロールアソシエーションユーザーアカウント_POST_ToSite.sh
コマンド:
./RolesAssociationUserAccount_POST_ToSite.sh 1234 5678 9012
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/site/${3}" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
ロールユーザーアソシエーション_POST_ToSite.java
コマンド:
java -classpath .:* -DroleId=1234 -DsiteId=5678 -DuserAccountId=9012 RoleUserAssociation_POST_ToSite
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.postSiteRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")),
Long.valueOf(System.getProperty("siteId")));
}
ユーザーを組織ロールに関連付ける
ユーザーを特定の組織ロールに関連付けることができます。 1234 を組織の ID に置き換えます。 5678 を自分のロールの ID に置き換えます。 9012 をユーザーIDに置き換えます。
ロール協会ユーザーアカウント_POST_ToOrganization.sh
コマンド:
./RolesAssociationUserAccount_POST_ToOrganization.sh 1234 5678 9012
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/organization/${3}" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
ロールユーザーアソシエーション_POST_ToOrganization.java
コマンド:
java -classpath .:* -DorganizationId=1234 -DroleId=5678 -DuserAccountId=9012 RoleUserAssociation_POST_ToOrganization
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.postOrganizationRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")),
Long.valueOf(System.getProperty("organizationId")));
}
通常の役割の関連付けを削除する
特定のユーザーから通常の役割の関連付けを削除します。 1234 をロールの ID に置き換えます。 5678 をユーザーIDに置き換えます。
RolesAssociationUserAccount_DELETE_FromInstance.sh
コマンド:
./RolesAssociationUserAccount_DELETE_FromInstance.sh 1234 5678
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}" \
--header "Content-Type: application/json" \
--request "DELETE" \
--user "test@liferay.com:learn"
ロールユーザーアソシエーション_DELETE_FromInstance.java
コマンド
java -classpath .:* -DroleId=1234 -DuserAccountId=5678 RoleUserAssociation_DELETE_FromInstance
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.deleteRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")));
}
サイトロールの関連付けを削除
特定のユーザーからサイト ロールの関連付けを削除します。 1234 をロールの ID に置き換えます。 5678をサイトのIDに置き換えてください。 9012 をユーザーIDに置き換えます。
RolesAssociationUserAccount_DELETE_FromSite.sh
コマンド:
./RolesAssociationUserAccount_DELETE_FromSite.sh 1234 5678 9012
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/site/${3}" \
--header "Content-Type: application/json" \
--request "DELETE" \
--user "test@liferay.com:learn"
ロールユーザーアソシエーション_DELETE_FromSite.java
コマンド
java -classpath .:* -DroleId=1234 -DsiteId=5678 -DuserAccountId=9012 RoleUserAssociation_DELETE_FromSite
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.deleteSiteRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")),
Long.valueOf(System.getProperty("siteId")));
}
組織の役割の関連付けを削除する
特定のユーザーから組織ロールの関連付けを削除します。 1234 を組織の ID に置き換えます。 5678 を自分のロールの ID に置き換えます。 9012 をユーザーIDに置き換えます。
RolesAssociationUserAccount_DELETE_FromOrganization.sh
コマンド:
./RolesAssociationUserAccount_DELETE_FromOrganization.sh 1234 5678 9012
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/organization/${3}" \
--header "Content-Type: application/json" \
--request "DELETE" \
--user "test@liferay.com:learn"
ロールユーザー関連付け_DELETE_FromOrganization.java
コマンド
java -classpath .:* -DorganizationId=1234 -DroleId=5678 -DuserAccountId=9012 RoleUserAssociation_DELETE_FromOrganization
コード:
public static void main(String[] args) throws Exception {
RoleResource.Builder builder = RoleResource.builder();
RoleResource roleResource = builder.authentication(
"test@liferay.com", "learn"
).build();
roleResource.deleteOrganizationRoleUserAccountAssociation(
Long.valueOf(System.getProperty("roleId")),
Long.valueOf(System.getProperty("userAccountId")),
Long.valueOf(System.getProperty("organizationId")));
}
API エクスプローラー には、すべての ロール サービスとスキーマが表示され、各サービスを試すためのインターフェースがあります。
Liferay DXP 2024.Q4+/Portal GA129+では、外部参照コードを使用してロールを GET/PUT/PATCH/DELETE できます。