Fórumok

Redirección a una comunidad.

Marcos Miranda, módosítva 10 év-val korábban

Redirección a una comunidad.

New Member Bejegyzések: 2 Csatlakozás dátuma: 2013.05.25. Legújabb bejegyzések
Buenas, actualmente intento cumplir un requerimiento que me está dando algún quebradero de cabeza.

Fundamentalmente, tal como está estructurado mi portal, los usuarios solo van a pertenecer a una comunidad, que les es asignada automáticamente según son creados.
Mi mayor complicación es, que una vez los usuarios hagan logIn, sean redireccionados directamente a la comunidad a la que pertenecen, sé que tengo que usar la clase DefaultLandingPageAction, pero no tengo muy claro como orientarlo.

Si alguien tiene alguna idea de como sería posible, me haría un gran favor.

Un saludo y muchas gracias.
Luis Manuel Cruza Roldán, módosítva 10 év-val korábban

RE: Redirección a una comunidad.

New Member Bejegyzések: 2 Csatlakozás dátuma: 2011.04.25. Legújabb bejegyzések
Hola, Marcos

Lo más sencillo que puedes hacer es, por medio de un hook, crearte una acción post-login y en ella calcular la url y realizar la redirección. Te voy detallando paso a paso:

Primero registramos la acción post-login en el fichero portal.properties en src del hook.

login.events.post=xxx.xxx.TuAction


Pasamos a implementar la clase que acabas de registrar, crea la clase xxx.xxx.TuAction que extienda de com.liferay.portal.kernel.events.Action. Por ejemplo:


...
import com.liferay.portal.kernel.events.Action;
...

public class TuAction extends Action {

	@Override
	public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {

		try {
			doRun(request, response);
		} catch (Exception e) {
			throw new ActionException(e);
		}
	}

	protected void doRun(HttpServletRequest request, HttpServletResponse response) throws Exception {

		long companyId = PortalUtil.getCompanyId(request);
		long userId = PortalUtil.getUserId(request);

		// Recupera el path de la comunidad donde quieres redirigir al usuario.
		String path = getUserLandingPage(long companyId, long userId)

		// Redirección al path calculado
		if (Validator.isNotNull(path)) {
			LastPath lastPath = new LastPath(StringPool.BLANK, path);
			HttpSession session = request.getSession();
			session.setAttribute(WebKeys.LAST_PATH, lastPath);
		}
	}

	public String getUserLandingPage(long companyId, long userId) throws PortalException, SystemException {
		
		List<group> groups = GroupLocalServiceUtil.getUserGroups(userId);
		for (Group group:groups) {
			if (group.isSite()) {
				if (!group.isGuest()) {
					List<layout> layouts = LayoutLocalServiceUtil.getLayouts(group.getGroupId(), true);
					if (layouts!=null &amp;&amp; layouts.size()&gt;0) {
						return PropsUtil.get("layout.friendly.url.private.group.servlet.mapping") 
								+ group.getFriendlyURL() + layouts.get(0).getFriendlyURL();
					}
				}
			}
		}
	}
}
</layout></group>


En el método getUserLandingPage lo que hago es recuperar todos los grupos a los que pertenece el usuario, yo no distingo por tipo de grupos por lo que aquí probablemente tendrás que realizar comprobaciones propias. Para todos los grupos del usuario me quedo con el primer grupo que no sea la comunidad Guest y que tenga páginas privadas. Para ese grupo calculo el path a su primera página privada.

Espero que te sea de ayuda.

Un saludo.
Marcos Miranda Beltrán, módosítva 10 év-val korábban

RE: Redirección a una comunidad.

New Member Bejegyzések: 2 Csatlakozás dátuma: 2013.05.25. Legújabb bejegyzések
Muchas gracias, voy a probarlo.


Un saludo.