問題
- ユーザーにもう一度、利用規約に同意してもらいたい。
環境
- Liferay DXP 7.0
解決
Liferayの基本機能には、"利用規約 "ページを2回目に有効にする機能はありません。2回目の"利用規約"ページを有効にするには、データベースのuser_テーブルのAgreedToTermsOfUseカラムを修正する必要があります。このカラムはデフォルトでは "0 "に設定されており、ユーザーが "同意する"をクリックすると、このカラムは "1 "に変換されます。
したがって、Liferay API UserLocalServiceUtil.updateAgreedToTermsOfUse(args)を使用してuser_テーブルのAgreedToTermsOfUse列の値を更新するか、以下のgroovyスクリプトを実行してuser_テーブルのAgreedToTermsOfUse列の値を更新することができます。
以下は、全ユーザーのAgreedToTermsOfUseの値を "0 "に更新するgroovyスクリプトです。 以下はgroovyスクリプトを実行するための手順です。
1) 管理者としてログインし、コントロールパネル-->サーバー管理者-->スクリプト-->"Groovy "を選択します
2) 以下のGroovyスクリプトを貼り付けて、実行をクリックします
import com.liferay.portal.kernel.model.User;import com.liferay.portal.kernel.service.UserLocalServiceUtil;import java.util.List;/*** The following code will get all of the users.**/List<User> Users = UserLocalServiceUtil.getUsers(-1, -1);for(User user : Users) {/*** If you want some special users enable the Terms & Condition page again, you* should add conditions, eg. user.getFullName.equals("Jack Lee"), user.isActive().**/if(user.isAgreedToTermsOfUse()) {UserLocalServiceUtil.updateAgreedToTermsOfUse(user.getUserId(), false);}}
結果
上記のスクリプトを実行すると、すべてのユーザーは再び「利用規約」のページを取得することになります。
追加情報
上記の手順を実行する前に、以下の手順を確認することをお勧めします:
1) groovyスクリプトを実行する前にデータベースのバックアップを取っておくと、何かあったときにデータベースを復元することができます。
2) portal-ext.propertiesで "terms.of.use.required "がtrueである必要がありますが、デフォルトではtrueに設定されています。したがって、"terms.of.use.required "がportal-ext.propertiesに無い場合は問題ありませんが、portal-ext.propertiesで "terms.of.use.required=false "が設定されていないことを確認する必要があります。
3) 特定のユーザーに対して"利用規約"ページを再度有効にしたい場合は、利用規約を再度有効にしたいユーザーに対して条件を追加する必要がありますので、Groovyスクリプトのコメント部分を参考にしてください。
4) 検証環境で報告された動作をテストしてから、お客様の判断で本番に移行してください。
5) この解決策にはカスタマイズが必要であり、チームの裁量でのみ実装する必要があります。 Liferayサポートでは、カスタマイズの設計や実装をサポートすることはできません。