2014-06-10 21 views
1

我有兩個網站(site1site2)和兩個組(group1group2)。我在這兩個網站上都有Sign In Liferay的portlet。我希望如果用戶在site1上註冊Sign In portlet,則用戶被分配到group1,並且如果用戶在site2上註冊Sign In portlet,則用戶被分配到group2如何根據網站設置默認組

怎麼辦?

===編輯===

我試着用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

你可以寫鉤來覆蓋支柱作用(/login/create_account)負責創建賬戶。 Overriding and Adding Struts Actions

在代碼中,執行原支柱作用的的processAction(com.liferay.portlet.login.action.CreateAccountAction),用於檢查SessionErrors對象之後,它應該是空的。(因爲那時只有用戶將已創建)

如果SessionErrors是空的,然後得到用戶對象由emailaddress(從請求參數獲取emailaddress)和來自themeDisplay對象的當前組。

有用戶對象和當前組對象,你可以很容易地通過GroupLocalServiceUtil.addUserGroups(userId, groupId)

+0

謝謝您的回答分配用戶組。我是Liferay的一名成員,我無法使用你的答案。我編輯了我的問題,以顯示我嘗試使用您的答案。你能寫一些示例代碼嗎?謝謝。 – Mariusz

+1

也請重寫渲染方法以避免此錯誤。 –

+0

我不知道如何從'themeDisplay'獲取用戶。 'themeDisplay.getUser()'返回一些默認的liferay用戶,郵件爲'default @ liferay.com'。我不需要當前組,我需要'group1' id或'group2' id,我應該按名稱查找組。 – Mariusz