我有两个网站(site1
和site2
)和两个网站(group1
和group2
)。我在这两个网站上都有Sign In
Liferay的portlet。我希望如果用户在Sign In
上通过site1
portlet进行注册,则会将用户分配给group1
,如果用户在Sign In
上通过site2
portlet进行注册,则会分配用户到group2
。
怎么做?
=== EDIT ===
我尝试使用struts动作编写钩子,但它对我不起作用。
的liferay-hook.xml:
<hook>
<struts-action>
<struts-action-path>/login/create_account</struts-action-path>
<struts-action-impl>com.mypackage.CreateAccountAction</struts-action-impl>
</struts-action>
</hook>
CreateAccountAction.java:
package com.mypackage;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import com.liferay.portal.kernel.struts.BaseStrutsPortletAction;
import com.liferay.portal.kernel.struts.StrutsPortletAction;
public class CreateAccountAction extends BaseStrutsPortletAction {
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
System.out.println("CreateAccountAction");
originalStrutsPortletAction.processAction(originalStrutsPortletAction,
portletConfig, actionRequest, actionResponse);
}
}
点击创建帐户案例:
12:25:38,177 ERROR [http-bio-8078-exec-126][PortletRequestProcessor:466] Forward does not exist
答案 0 :(得分:1)
您可以编写钩子来覆盖负责创建帐户的struts-action(/login/create_account
)。 Overriding and Adding Struts Actions
在代码中,执行原始struts操作的processAction(com.liferay.portlet.login.action.CreateAccountAction
),在检查SessionErrors
对象之后,它应该为空。(因为那时只会创建用户)< / p>
如果SessionErrors
为空,则通过emailaddress(从请求参数获取emailaddress)和themeDisplay
对象的当前组获取User对象。
拥有用户对象和当前组对象,您可以轻松地将用户分配到GroupLocalServiceUtil.addUserGroups(userId, groupId)