掲示板

Obtener datos de usuario logueado para usar en el código de un portlet

12年前 に Luis Perez によって更新されました。

Obtener datos de usuario logueado para usar en el código de un portlet

New Member 投稿: 1 参加年月日: 12/01/11 最新の投稿
Saludos, desearía saber qué funciones del api de Liferay debo utilizar para poder, desde el código fuente de mi portlet, conocer datos relacionados al usuario logueado en el portal( tales como su cuenta en liferay, id, etc).

Como dato adicional, estoy usando portlets generados con Openxava, los cuales siguen el estándar JSR-168. Si alguien ha obtenido la solución específicamente para los portlets generados con este framework, sería mucho mas rápido dar con la respuesta que busco.

Muchas gracias de antemano.
thumbnail
12年前 に Manuel de la Peña によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 62 参加年月日: 11/07/06 最新の投稿
Hola Luis.

Desconozco el framework que utilizas, pero desde tu código deberías tener acceso al ThemeDisplay para acceder al usuario logado, ya que se encuentra en un JAR en el servidor (TOMCAT_DIR/lib/ext/portal-servcice.jar)

User user = themeDisplay.getUser();

Un saludo, Manuel
thumbnail
12年前 に Mikel Goikoetxea によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 54 参加年月日: 10/03/16 最新の投稿
Buenas,

En princpio con el siguiente código debería funcionar:

ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
themeDisplay.getUser();

Un saludo,

Mikel Goikoetxea Bilbao (@mgoibil)
B2B 2000
12年前 に Gerardo Santamaria Boza によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Regular Member 投稿: 143 参加年月日: 12/01/17 最新の投稿
buenas compañero , deseo preguntarte si este codigo lo deberia de usar dentro de el codigo JAVA
12年前 に Gerardo Santamaria Boza によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Regular Member 投稿: 143 参加年月日: 12/01/17 最新の投稿
yo lo logre de la siguiente manera


FacesContext context = FacesContext.getCurrentInstance();
PortletRequest portletRequest = (PortletRequest) context.getExternalContext().getRequest();

themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
user = themeDisplay.getUser();

el user nos da una hilera con todo los datos del usuario y de ahi escojo lo que quiero
la libreria la cargue de la siguiente manera

<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<version>6.1.0</version>

</dependency>

este jar se encuentra en directorio de glassfish3.1/domain/domain/>portal-service
thumbnail
12年前 に Mikel Goikoetxea によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 54 参加年月日: 10/03/16 最新の投稿
Buenas Gerardo,

Eso es, es código JAVA.
De todos modos lo puedes utilizar tanto en una clase como en una JSP de la siguiente forma:

&lt;% AQUI TU CODIGO JAVA%&gt;

Un saludo,

Mikel Goikoetxea Bilbao (@mgoibil)
B2B 2000
12年前 に Gerardo Santamaria Boza によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Regular Member 投稿: 143 参加年月日: 12/01/17 最新の投稿
Gracias por tu respuesta
12年前 に Robert S によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 45 参加年月日: 12/03/07 最新の投稿
Buenas Mikel,

Tengo una pregunta, he intentado poner el codigo que dices :
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
themeDisplay.getUser();
entre las etiquetas <% %>
Pero me da error me dice que ThemeDisplay "cannot be resolved to a type". Supongo que debo de incluir alguna libreria en el JSP, pero cual y como???

Un saludo y Gracias!!!
12年前 に Robert S によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 45 参加年月日: 12/03/07 最新の投稿
Vale ya lo he conseguido, he puesto <theme:defineObjects /> en el JSP, y ahora ya puedo acceder por ejemplo a los datos del usuario que esta registrado.
Pero ahora tengo otra pregunta, ¿Como puedo acceder al resto de información que esta en la base de datos, como por ejemplo contenidos es decir algún tipo de noticia?

Un saludo.
thumbnail
12年前 に Mikel Goikoetxea によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 54 参加年月日: 10/03/16 最新の投稿
Hola Robert,

Para eso tenemos los servicios de Liferay.
Echale un vistazo a los siguientes servicios que seguro que te sirven:
  • JournalArticleLocalServiceUtil
  • JournalContentSearchLocalServiceUtil

Ya nos comentarás que tal te ha ido.

Un saludo,

Mikel Goikoetxea Bilbao (@mgoibil)
B2B 2000
12年前 に Roberto S によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 45 参加年月日: 12/03/07 最新の投稿
Hola buenos días,
Primero darte las gracias por contestar, estoy utilizando lo que me dices tengo esto:
JournalArticle noticia=JournalArticleLocalServiceUtil.getLatestArticle(groupId, articleId);
Estoy incluyendo los valores a pelo para hacer pruebas,
long groupId=10157;
String articleId="10461";
Pero al ir a la web y ver la página me sale que el “portlet is temporarily unavailable
Otra cosa ahora estoy poniendo los valores a pelo, pero como puedo recoger los valores de groupId y los de articleId.??
Muchas gracias, un saludo.
thumbnail
12年前 に Mikel Goikoetxea によって更新されました。

RE: Obtener datos de usuario logueado para usar en el código de un portlet

Junior Member 投稿: 54 参加年月日: 10/03/16 最新の投稿
El groupId lo puedes obtener de la siguiente forma:
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
themeDisplay.getScopeGroupId();

En cuanto al articleId lo mejor sería añadirlo en el "portlet.properties" en WEB-INF/src:
articleId=10461

Y luego cogerlo en la clase Java:
long articleId=Long.parseLong(PortletProps.get("articleId"));

El error que te está dando no te puedo decir exactamente a qué se debe, lo mejor sería poner un punto de ruptura e ir paso a paso para ver en qué punto casca exactamente. Por otra parte, también te puedes fijar en la traza del error en el log o en la consola del Tomcat.

Un saludo,

Mikel Goikoetxea Bilbao (@mgoibil)
B2B 2000