2012-12-29 3 views
0

Liferay의 사용자 등록 프로세스에 일부 유효성 검사 단계를 추가하려고하지만 올바른 위치를 찾지 못하는 것 같습니다.Liferay에서 사용자 등록을위한 추가 유효성 검사 단계 만들기

내가 아는 한, 새로운 사용자를 만들 때 내 코드를 추가 할 수있는 이벤트가 없습니다 ("login.events.post"이벤트가있는 로그인 프로세스와 반대).

이렇게 할 방법이 있습니까?

업데이트 : 새 사용자 등록 포틀릿을 만드는 것이 많은 의미가 있다고하더라도, 이미 수행 한 작업을 다시하지 않아야합니다.

방금 ​​"servlet.service.events.pre" 이벤트에 대해 알아 냈고 CreateAccountAction 클래스에서 자체 유효성 검사를 추가하기 위해 후크를 만들 수 있다고 생각했지만이 주제에 대한 평생 문서를별로 참고하지 않았습니다. 모든 아이디어/제안/링크는 크게 감사하겠습니다.

답변

0

create_account.jsp에 후크를 작성하고 몇 가지 유효성 검사를 함께 수행했습니다. 서버 쪽 유효성 검사 포함)를 새 사용자 정보에 추가합니다. 그런 다음 login.jsp에 새 후크를 만들었습니다 (이는 liferay가 새 사용자 계정을 만드는 직후에 실행됩니다). login.jsp로드 할 때

은을 Liferay는 사용자가이 페이지에 착륙하기 전에 추가 된 경우 평가 :

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

우리가 새로 만든 사용자에 대한 우리 자신의 검증의 두 번째 라운드를 추가 곳이 바로 거기입니다.

1

아래에 아주 간단한 방법을 제안하려고합니다.

기존 Liferay의 사용자 등록 양식을 무시하려면 hook을 만들 필요가 없습니다. 원하는보기 기술과 사용자 정의 필드 (사용자 필드가 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 또는 자신의 생일로 값을 전달하십시오.

+1

'portal-impl.jar'을 임포트하는 것은 플러그인 포틀릿에서 좋은 습관이 아닙니다. 또한, Liferay 6.1부터 포틀릿은'portal-impl.jar'을 참조하는 경우 빌드하거나 전개하지 않습니다. 그리고 질문에 [tag : liferay-6] 태그가 포함되어 있기 때문에'portal-impl.jar' 가져 오기 연습을 포기해야합니다. –

+0

감사합니다. Prakash. –