Documentation

ロールAPIの基本

アプリケーションメニューから Create and Manage Roles を利用できますが、LiferayのREST APIを利用することも可能です。 これらのサービスを呼び出して、Roleを管理します。

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

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

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29。

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

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

  1. Download and unzip Roles API Basics .

    curl https://learn.liferay.com/dxp/latest/ja/users-and-permissions/developer-guide/liferay-z3v5.zip -O
    
    unzip liferay-z3v5.zip
    
  2. ユーザーIDの一覧を取得するには、 Users_GET_FromInstance を使用します。 Regular Roleに関連付けたいユーザーIDをメモしておきます。

  3. Roles_GET_FromInstance を使用して、すべてのRole IDのリストを取得します。 roleType: regular関連付けたいロールIDをメモしておきます。 例えば、「Analytics Administrator Regular Role」タイプ。

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

    ./RoleUserAssociation_POST_ToInstance.sh 1234 5678
    
  5. Global MenuControl PanelRoles に移動します。 通常の役割]タブで、ユーザーを関連付けるために使用した特定の役割をクリックします。 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 \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}" \
	-u "[email protected]: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 経由でユーザーを認証する必要があります。

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

Javaクラスを調べる

RoleUserAssociation_POST_ToInstance.java クラスは、Role 関連サービスを呼び出すことで、User を Regular Role に関連付けました。

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

	RoleResource roleResource = builder.authentication(
		"[email protected]", "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();

Basic 認証を指定し、 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コマンドを実行することで、Roleの一覧を表示することができます。

Roles GET FromInstance.sh

コマンド:

./Roles_GET_FromInstance.sh

コード:

curl \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	Page<Role> role = roleResource.getRolesPage(Pagination.of(1, 2));

	System.out.println(role);
}

Instance の Roles オブジェクトが JSON で表示されます。

役割分担をする

以下のcURLまたはJavaコマンドを使用して、特定のRoleを取得します。

ちなみに

インスタンスの 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}" \
	-u "[email protected]:learn"

Role GET ById.java

コマンド:

java -classpath .:* -DroleId=1234 Role_GET_ById

コード:

	RoleResource.Builder builder = RoleResource.builder();

	RoleResource roleResource = builder.authentication(
		"[email protected]", "learn"
	).build();

	System.out.println(
		roleResource.getRole(Long.valueOf(System.getProperty("roleId"))));
}

Role フィールドは、JSONで表示されます。

ユーザーをサイトの役割に関連付ける

ユーザーを特定のサイトロールに関連付けることができます。 1234 をRoleのIDに置き換えてください。 5678 をお客様のサイトIDに置き換えてください。 9012 をユーザーIDに置き換えてください。

RoleUserAssociation POST ToSite.shを実行します。

コマンド:

./RoleUserAssociation_POST_ToSite.sh 1234 5678 9012

コード:

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/site/${3}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	roleResource.postSiteRoleUserAccountAssociation(
		Long.valueOf(System.getProperty("roleId")),
		Long.valueOf(System.getProperty("userAccountId")),
		Long.valueOf(System.getProperty("siteId")));
}

ユーザーを組織の役割に関連付ける

ユーザーを特定の組織ロールに関連付けることができます。 1234 を組織のIDに置き換えてください。 5678 を自分のRoleのIDに置き換えてください。 9012 をユーザーIDに置き換えてください。

RoleUserAssociation POST ToOrganization.shを実行します。

コマンド:

./RoleUserAssociation_POST_ToOrganization.sh 1234 5678 9012

コード:

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/organization/${3}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	roleResource.postOrganizationRoleUserAccountAssociation(
		Long.valueOf(System.getProperty("roleId")),
		Long.valueOf(System.getProperty("userAccountId")),
		Long.valueOf(System.getProperty("organizationId")));
}

レギュラーロールの関連付けを解除する

特定のユーザーから通常の役割の関連付けを削除します。 1234 をRoleのIDに置き換えてください。 5678 をユーザーIDに置き換えてください。

RoleUserAssociation DELETE FromInstance.shを実行します。

コマンド:

./RoleUserAssociation_DELETE_FromInstance.sh 1234 5678

コード:

curl \
	-H "Content-Type: application/json" \
	-X DELETE \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	roleResource.deleteRoleUserAccountAssociation(
		Long.valueOf(System.getProperty("roleId")),
		Long.valueOf(System.getProperty("userAccountId")));
}

サイトの役割の関連付けを削除する

特定のユーザーからサイトロールの関連付けを削除する。 1234 をRoleのIDに置き換えてください。 5678 をお客様のサイトIDに置き換えてください。 9012 をユーザーIDに置き換えてください。

RoleUserAssociation DELETE FromSite.shを実行します。

コマンド:

./RoleUserAssociation_DELETE_FromSite.sh 1234 5678 9012

コード:

curl \
	-H "Content-Type: application/json" \
	-X DELETE \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/site/${3}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	roleResource.deleteSiteRoleUserAccountAssociation(
		Long.valueOf(System.getProperty("roleId")),
		Long.valueOf(System.getProperty("userAccountId")),
		Long.valueOf(System.getProperty("siteId")));
}

組織の役割の関連付けを解除する

特定のユーザーから組織ロールの関連付けを解除する。 1234 を組織のIDに置き換えてください。 5678 を自分のRoleのIDに置き換えてください。 9012 をユーザーIDに置き換えてください。

RoleUserAssociation DELETE FromOrganization.sh

コマンド:

./RoleUserAssociation_DELETE_FromOrganization.sh 1234 5678 9012

コード:

curl \
	-H "Content-Type: application/json" \
	-X DELETE \
	"http://localhost:8080/o/headless-admin-user/v1.0/roles/${1}/association/user-account/${2}/organization/${3}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	roleResource.deleteOrganizationRoleUserAccountAssociation(
		Long.valueOf(System.getProperty("roleId")),
		Long.valueOf(System.getProperty("userAccountId")),
		Long.valueOf(System.getProperty("organizationId")));
}

API Explorer には Role のすべてのサービスとスキーマが表示され、各サービスを試用するためのインターフェイスが用意されています。