Fórum

Implementação do Hook Landing Page

thumbnail
Brunno Figueirôa Goldstein, modificado 12 Anos atrás.

Implementação do Hook Landing Page

Junior Member Postagens: 51 Data de Entrada: 05/05/11 Postagens Recentes
Olá a todos,
estou implementando a versão do Hook - Landing Page criado pelo Marcelo Guimarães, cujo post pode ser encontrado aqui.

Meu LR utiliza conexão com Ldap na autenticação de usuários e a primeira vez que um usuário do Ldap, que nunca acessou o LR, acessa ele cria uma nova conta.

Essa "nova" conta não possui organização alguma e o hook do Landing Page não irá funcionar.

Minha idéia é a seguinte, implementar o algoritmo para que no primeiro acesso do "novo" usuário do LR ele seja adicionado automaticamente a uma organização já criada.

Segue abaixo o código:
package br.com.prodevelopment.portal.events;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.mail.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.text.html.HTMLDocument.Iterator;

import com.liferay.portal.kernel.dao.orm.Criterion;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.struts.LastPath;
import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Organization;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
import com.liferay.portal.service.OrganizationLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;

public class CustomLandingPageAction extends Action {

	public void run(HttpServletRequest req, HttpServletResponse res) throws ActionException {
		try {
			doRun(req, res);
		}
		catch (Exception e) {
			throw new ActionException(e);
		}
	}
	
	protected void doRun(
			HttpServletRequest request, HttpServletResponse response)
		throws Exception {

		String userId = request.getRemoteUser();
		String forwardUrl = "/web/guest";
		User user = null;
		
		try {
			user = UserLocalServiceUtil.getUserById(Long.parseLong(userId));
		} catch (PortalException ex) {
			ex.getMessage();
		} catch (SystemException ex) {
			ex.getMessage();
		}
		List<organization> organizations = null;
		
		
		List<organization> orgs = OrganizationLocalServiceUtil.getOrganizations(0, OrganizationLocalServiceUtil.getOrganizationsCount());
		
		int i=0;
		
		for(i=0;i<orgs.size();i++){ system.out.println(orgs.get(i).getname()); if(orgs.get(i).getname().matches("7cogs, inc."))break; } try { organizations="OrganizationLocalServiceUtil.getUserOrganizations(Long.parseLong(userId));" catch (exception ex) ex.getmessage(); organization organization; group group; if (organizations="=" null && organizations.size()="=" 0) long[] users="new" long.parselong(userid) }; userlocalserviceutil.addorganizationusers(orgs.get(i).getorganizationid(), users); organization="(Organization)" organizations.get(0); group="organization.getGroup();" if(group.hasprivatelayouts()) forwardurl="/web" + group.getfriendlyurl().tostring(); if(group.haspubliclayouts()) else{ map<string, string[]> params = new HashMap<string, string[]>();
        LastPath lastPath = new LastPath(StringPool.BLANK, forwardUrl, params);
        HttpSession session = request.getSession();
        session.setAttribute(WebKeys.LAST_PATH, lastPath);
	}
	
}
</string,></orgs.size();i++){></organization></organization>


O problema que estou tendo é que ao fazer a chamada UserLocalServiceUtil.addOrganizationUsers(orgs.get(i).getOrganizationId(), users); nada acontece, o usuário não é adicionado na organização.

Vocês tem alguma idéia do pq?

Agradeço a ajuda desde já,

Abrs!
thumbnail
Thiago Leão Moreira, modificado 12 Anos atrás.

RE: Implementação do Hook Landing Page

Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Brunno, como você sabe que não está adicionado? Toda vez que esse método é executado uma nova linha na tabela Users_Orgs deve ser criada.
thumbnail
Brunno Figueirôa Goldstein, modificado 12 Anos atrás.

RE: Implementação do Hook Landing Page

Junior Member Postagens: 51 Data de Entrada: 05/05/11 Postagens Recentes
Bom, basicamente eu faço um redirecinamento logo após adicionar o usuário, que não possui organização, na organização 7Cogs.
O usuário deveria ser redirecinado para a página dessa organização e a organização deveria aparecer no painel de controle na área Organizações do usuário.
thumbnail
Thiago Leão Moreira, modificado 12 Anos atrás.

RE: Implementação do Hook Landing Page

Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Brunno,

Se você olhar com atenção o teu código verá que tem um problema com esse if statement

if (organizations == null &amp;&amp; organizations.size() == 0) {


Ou seja o teu código de adição de usuário à organização nunca será chamado pois ele nunca entra nesse if. Você deve trocar o && por || para consertar o problema. Acho até que tu pode tirar a verificação de null pois a collection vai retornar vazia e nunca null.
thumbnail
Brunno Figueirôa Goldstein, modificado 12 Anos atrás.

RE: Implementação do Hook Landing Page

Junior Member Postagens: 51 Data de Entrada: 05/05/11 Postagens Recentes
Valeu Thiago, era isso mesmo... erro bobo de implementação.

Desculpa qualquer coisa ae,

Obrigado!
thumbnail
Thiago Leão Moreira, modificado 12 Anos atrás.

RE: Implementação do Hook Landing Page

Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
emoticon