oo

ロールAPIの基本

アプリケーションメニューから Create and Manage Roles ができますが、Liferay の REST API を使うこともできます。 ロールを管理するためにこれらのサービスを呼び出す。

ユーザーを通常の役割に関連付ける

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

docker run -it -m 8g -p 8080:8080 liferay/dxp:2024.q1.1。

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

次に、以下の手順を実行します。

  1. 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
    
  2. ユーザーIDのリストを取得するには、 Users_GET_FromInstance 。 レギュラー・ロールに関連付けたいユーザーIDをメモしてください。

  3. Roles_GET_FromInstance を使用して、すべてのロールIDのリストを取得します。 roleType: regular関連付けたいロールIDをメモしておくこと。 例えば、アナリティクス管理者の通常の役割タイプ。

  4. cURLスクリプトを使用して、ユーザーを通常の役割に関連付けます。 コマンドラインで、 curlフォルダに移動します。 RoleUserAssociation_POST_ToInstance.sh スクリプトを実行します。 1234 をレギュラー・ロールのIDに置き換えてください。 5678 をユーザーIDに置き換えてください。

    ./RoleUserAssociation_POST_ToInstance.sh 1234 5678
    
  5. Global MenuControl PanelRoles に移動する。 Regular Roles]タブで、ユーザの関連付けに使用した特定の[Role]をクリックします。 Assignees タブをクリックします。 ユーザが選択したロールに関連付けられたことを確認します。

    ユーザが関連付けられたことを確認する。

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

    javac -classpath .:* *.java
    
  7. 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" 基本的な認証情報
note

ここでは、デモのために基本的な認証を使用しています。 本番環境では、 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エクスプローラーで確認できます。

note

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

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

important

サービスの詳細は、 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を取得する。

tip

インスタンスの 役割 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 のすべてのサービスとスキーマを表示し、各サービスを試すためのインターフェイスを備えている。