0

Liferayのユーザー登録プロセスにいくつかの検証手順を追加しようとしていますが、そうするための適切な場所が見つからないようです。

私の知る限り、新しいユーザーを作成するときに独自のコードを追加できるイベントはありません(「login.events.post」イベントがあるログインプロセスとは異なります)。

これを行う方法はありますか?

更新:新しいユーザー登録ポートレットを作成することが非常に理にかなっている場合でも、liferayがすでに行っていることをやり直さないようにしています。

イベントについて知り"servlet.service.events.pre"、クラスにフックを作成しCreateAccountActionて独自の検証を追加できると思いましたが、このトピックに関するliferayのドキュメントからはあまり得られていません。任意のアイデア/提案/リンクをいただければ幸いです。

4

2 に答える 2

1

以下の非常に簡単な方法を提案しようとしています。

hook既存のLiferayのユーザー登録フォームを上書きするためにを作成する必要はありません。お気に入りのビューテクノロジーと独自のカスタマイズされたフィールドを使用して、独自のカスタマイズされたユーザー登録フォームを作成できます(つまり、Liferayのユーザー登録フィールドと比較してフィールドの数が少なくなります)。このフォームのすべての検証はコードによって行われ、エラーメッセージはコードによってのみスローされます。すべての検証が通過した場合にのみ、LiferayのaddUserメソッドを呼び出すことができます。

以下に例を示します。要件に従ってコードを変更します。

if(allValidationsPassThrough)
{
 long[] organizationIds = { 111L }; //Just an example. Check the Organisation ID you are using
long[] groupIds = { 222L };
long[] roleIds = { 333L };
long[] userGroupIds = (long[])null;
String screenName = yourBean.getUser(); //Just an example

UserLocalServiceUtil.addUser(//Pass the parameters to this method );
}

:このメソッドが予期するパラメーターは多数あります。ユーザー登録フォームで、誕生日をキャプチャしていない場合(たとえば)、値をnullまたは自分の誕生日として渡します:)

于 2012-12-29T06:33:20.037 に答える
0

最終的にフックを作成し、create_account.jspajaxを使用して、新しいユーザーの情報に対していくつかの検証(サーバー側の検証と一緒に)を実行しました。次に、別のフックを作成しました login.jsp(これは、liferayが新しいユーザーアカウントの作成を終了した直後に実行されます)。

login.jspが読み込まれると、liferayは、このページにアクセスする前にユーザーが追加されたかどうかを評価します。

<c:if test='<%= SessionMessages.contains(request, "user_added") %>'>

そこに、新しく作成されたユーザーに対して独自の検証の2回目のラウンドを追加しました。

于 2013-01-11T19:40:35.587 に答える