Fórum
Implementação do Hook Landing Page
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:
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!
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!
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.
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.
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.
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
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.
Se você olhar com atenção o teu código verá que tem um problema com esse if statement
if (organizations == null && 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.
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!
Desculpa qualquer coisa ae,
Obrigado!
Thiago Leão Moreira, modificado 12 Anos atrás.