如何根据站点设置默认组

时间:2014-06-10 10:16:23

标签: liferay

我有两个网站(site1site2)和两个网站(group1group2)。我在这两个网站上都有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

1 个答案:

答案 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)