null Liferayで特定の条件に合致するユーザを動的にロールアサインする

こんにちは。おおたにです。

 

今回はセグメント機能を利用して、動的にユーザをロールにアサインする方法を紹介します。

具体的には、特定の条件を指定したユーザセグメントを作成し、そのユーザセグメントをロールに割り当てることで、条件に合致したユーザがロールにアサインされるという形になります。例えば、これまでユーザ情報をLiferayに連携する時に所定のルールに則ってユーザをロールにアサインしていたものが、セグメントでの条件設定+セグメントを通じたユーザの動的ロールアサインで実現できるかもしれません。

では、その詳しい方法を見ていきましょう。なお、本機能はLiferay DXP 7.2 SP2もしくはSP3以降でのみ利用できる点にはご注意ください。また、セグメントの説明は記事「Liferayのセグメント機能を使ってWebページをパーソナライズしてみよう」をご参照ください。

 

前提条件

セグメントをロールに割り当てるためには事前の設定が必要です。まず、以下の2設定を行います。

  • 画面右上のアプリケーションメニュー > コントロールパネル > システム設定 > コンテンツとデータ > セグメント > セグメントのサービス > セグメントによるロールの割り当てを有効にする をON
  • 画面右上のアプリケーションメニュー > コントロールパネル > インスタンス設定 > コンテンツとデータ > セグメント > セグメントのサービス > セグメントによるロールの割り当てを有効にする をON

 

セグメントを標準ロールにアサインする

続いて、セグメントを作成して標準ロールにアサインしてみましょう。なお、いくつか制約事項があります。

  • グローバルサイトで定義されたセグメントのみ標準ロールにアサインできる
  • Administratorロールにはアサインできない(Liferay 2023.Q4.0で確認。UI上はアサインできるけど動作しない模様。Site Administrator/Site Ownerにアサインできないのと同じ制約だと思われる)

ここでは、ユーザのプロパティ「役職」が「部長」のユーザをPower Userロールにアサインしてみたいと思います。

1. 画面右上のアプリケーションメニュー > コントロールパネル > ロール に移動する

2. Power Userをクリックし、担当者 > セグメント に移動する

3. 追加アイコンをクリックするとグローバルサイトで定義されたセグメント一覧が表示される。未定義の場合は何も表示されないので右上の「新しいセグメント」アイコンをクリックする

4. タイトルを入力し、右ペインから ユーザー>役職 を左の条件欄にドラッグ&ドロップし、「等しい」「部長」と設定して保存をクリックする

5. セグメントを定義できたら、そのセグメントを選択して「追加」をクリックする

6. Power Userの担当者に作成したセグメントが追加されたことを確認する

これでセグメントの定義とAdministratorロールへのアサインができました。続いて、動作確認してみましょう。

7. テスト用のユーザを2つ作成し、片方の役職を「部長」とし、もう片方を「部長」以外にする。

8. テスト用のページに適当なウィジェットを配置し、権限設定でPower User以上にしか見えないようにする(GuestロールにView権限が付いている場合は削除する)

9. 役職「部長」のテストユーザでログインし、上記ウィジェットが見えることを確認する

10. もう一方のテストユーザでログインし、上記ウィジェットが見えないことを確認する

無事セグメントの標準ロールアサインを動作確認できたかと思います。

 

セグメントにサイトロールをアサインする

次に、セグメントにサイトロールをアサインしてみましょう。こちらもいくつか制約事項があります。

  • 当該サイトで定義されたセグメントのみサイトロールをアサインできる
  • Site Owner/Site Administratorはアサインできない

ここでは、ユーザのプロパティ「役職」が「部長」のユーザをSite Memberロールにアサインしてみたいと思います。

1. テスト用のサイトに移動し、画面左のプロダクトメニュー > メンバー > セグメント に移動する

2. 追加ボタンをクリックする

3. タイトルを入力し、右ペインから ユーザー>役職 を左の条件欄にドラッグ&ドロップし、「等しい」「部長」と設定して保存をクリックする(先ほどと同じ条件)

4. セグメントを定義できたら、そのセグメントのアクションメニュー > サイトロールの割当て をクリックする。なお、グローバルサイトのセグメントのアクションメニューにはサイトロール割り当てアクションは表示されない

5. Site Memberロールを選択して追加をクリックする。Site Administrator/Site Ownerはアサインできないようになっている

これでセグメントへのサイトロールアサインは完了です。では動作確認してみましょう。先ほどと同様の条件なので、テストユーザは使い回すことにします。

6. 当該サイトのサイトメンバーにテスト用ユーザが含まれていないことを確認する(含まれている場合は削除する)

7. テスト用のページに配置したウィジェットの権限設定で、Site MemberにView権限を付ける(Power UserやGuestロールにView権限が付いている場合は削除する)

8. 役職「部長」のテストユーザでログインし、上記ウィジェットが見えることを確認する

9. もう一方のテストユーザでログインし、上記ウィジェットが見えないことを確認する

これでセグメントのサイトロールアサインを動作確認できました。

 

今回の紹介は以上になります。使い方によってはとても便利な機能だと思いますので、是非利用してみてください。

関連記事
feature

RANKING
2021.1.08
2020.12.28
2020.12.01
2020.10.30
2020.12.18