ロールAPIの基本
アプリケーションメニューから Create and Manage Roles ができますが、Liferay の REST API を使うこともできます。 ロールを管理するためにこれらのサービスを呼び出す。
ユーザーを通常の役割に関連付ける
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2024.q2.11。
メールアドレス test@liferay.com とパスワード test を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを learn に変更します。
次に、以下の手順を実行します。
-
Roles API Basics をダウンロードし、解凍します。
curl https://resources.learn.liferay.com/dxp/latest/en/users-and-permissions/developer-guide/liferay-z3v5.zip -O
unzip liferay-z3v5.zip
-
ユーザーIDのリストを取得するには、 Users_GET_FromInstance 。 レギュラー・ロールに関連付けたいユーザーIDをメモしてください。
-
Roles_GET_FromInstance を使用して、すべてのロールIDのリストを取得します。
roleType: regular
関連付けたいロールIDをメモしておくこと。 例えば、アナリティクス管理者の通常の役割タイプ。 -
cURLスクリプトを使用して、ユーザーを通常の役割に関連付けます。 コマンドラインで、
curl
フォルダに移動します。RoleUserAssociation_POST_ToInstance.sh
スクリプトを実行します。1234
をレギュラー・ロールのIDに置き換えてください。5678
をユーザーIDに置き換えてください。./RoleUserAssociation_POST_ToInstance.sh 1234 5678
-
Global Menu → Control Panel → Roles に移動する。 Regular Roles]タブで、ユーザの関連付けに使用した特定の[Role]をクリックします。 Assignees タブをクリックします。 ユーザが選択したロールに関連付けられたことを確認します。
-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java
-
RoleUserAssociation_POST_ToInstance.java
クラスを以下のコマンドで実行します。java -classpath .:* -DroleId=1234 -DuserAccountId=5678 RoleUserAssociation_POST_ToInstance
cURLコマンドの検証
RoleUserAssociation_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" | 基本的な認証情報 |
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2 を使ってユーザーを認証する必要があります。 OAuth2を利用したReactアプリケーションのサンプルは、OAuth2を利用したユーザー認証 をご参照ください。
他のcURLコマンドも同様のJSON引数を使用します。
Javaクラスを調べる
RoleUserAssociation_POST_ToInstance.java
クラスは、Role関連サービスを呼び出すことで、ユーザーを通常のRoleに関連付けます。
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エクスプローラーで確認できます。
main
メソッドのコメントでは、クラスの実行を実演しています。
他の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);
}
インスタンスの Roles
オブジェクトがJSONで表示される。
役割を得る
以下のcURLまたはJavaコマンドで特定のRoleを取得する。
インスタンスの 役割
ID を取得するには Roles_GET_FromInstance.[java|sh]
を使用してください。
Role_GET_ById.sh
コマンド:
./Role_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}" \
--user "test@liferay.com:learn"
Role_GET_ById.java
コマンド:
java -classpath .:* -DroleId=1234 Role_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"))));
}
Role
フィールドはJSONで表示される。
ユーザーをサイトの役割に関連付ける
ユーザを特定のサイト役割に関連付けることができます。 1234
を役割のIDに置き換えてください。 5678
をあなたのサイトのIDに置き換えてください。 9012
をユーザーIDに置き換えてください。
RoleUserAssociation_POST_ToSite.sh
コマンド:
./RoleUserAssociation_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"
RoleUserAssociation_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に置き換えてください。
RoleUserAssociation_POST_ToOrganization.sh
コマンド:
./RoleUserAssociation_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"
RoleUserAssociation_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に置き換えてください。
RoleUserAssociation_DELETE_FromInstance.sh
コマンド:
./RoleUserAssociation_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"
RoleUserAssociation_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に置き換えてください。
RoleUserAssociation_DELETE_FromSite.sh
コマンド:
./RoleUserAssociation_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"
RoleUserAssociation_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に置き換えてください。
RoleUserAssociation_DELETE_FromOrganization.sh
コマンド:
./RoleUserAssociation_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"
RoleUserAssociation_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 Explorer は、 Role
のすべてのサービスとスキーマを表示し、各サービスを試すためのインターフェイスを備えている。