2009-06-09 32 views
15

Estoy intentando desarrollar un portlet para liferay.¿Cómo acceder al usuario desde un portlet de salvavidas?

¿Cómo puedo obtener acceso al nombre de usuario y la contraseña (y otros datos que tiene liferay) del usuario que está conectado actualmente?

También me gustaría poder ejecutar algún código cuando los usuarios cambien su contraseña.

Respuesta

15

Puede obtener la ID de usuario llamando al getRemoteUser() en el objeto PortletRequest. Esto está definido por JSR-168, por lo tanto, es compatible con todos los portales.

Una vez que tenga la identificación, puede obtener la información adicional llamando al getUserById() (un servicio específico de Liferay). Esto no está cubierto por la especificación de API de Portlet, por lo que lo bloquea en Liferay.

+3

El servicio específico Liferay es UserServiceUtil – frandevel

+1

Técnicamente, puede permanecer más portal independiente mediante el uso de 'portletRequest.getAttribute (PortletRequest.USER_INFO)'.Esto devuelve un mapa de atributos de usuario que se puede definir por cada implementación del portal. Consulte 'portlet-custom.xml' y' com.liferay.portlet.UserAttributes' para los atributos de usuario de Liferay. En su mayor parte, los nombres de los atributos de usuario son los recomendados por la especificación del portlet. –

14

Liferay material específico, aquí es un ejemplo de código para ser escrito en su clase de portlets para recuperar el usuario:

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

User user = themeDisplay.getRealUser(); // it gives you the actual Logged in User 
//you can also use 
// User user = themeDisplay.getUser(); // this would fetch the User you are impersonating 

long userId = user.getUserId(); 
String userName = user.getEmailAddress(); 

alternativa; Usuario

long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId(); 
User user = UserLocalServiceUtil.getUser(userId); 

Impersonate:

Liferay tiene un concepto que los administradores (o las personas con el conjunto correcto de permisos) puede suplantar a un usuario particular del portal. A través de esto, pueden ver cómo se ve el portal para ese usuario.

Para ejecutar el código cuando el usuario cambie sus contraseñas: Un enfoque sería crear un hook plugin y sustituyendo los servicios extendiendo la clase UserLocalServiceWrapper. Luego, verifique el cambio de contraseña y ejecute su código dentro de su clase personalizada.

Espero que esto ayude.

1

o simplemente puede usar javascript:

Liferay.ThemeDisplay.getUserId() 

Hay muchos agradable a faltar en el espacio de nombres Liferay, echar un vistazo a la API no tan bien documentado:

Además, eche un vistazo a la web se rvicios disponibles bajo localhost: 8080/API/jsonws que se puede invocar con una llamada javascript:

Liferay.Service(
    '/user/get-user-by-id', 
    { 
    userId: 10199 
    }, 
    function(obj) { 
    console.log(obj); 
    } 
); 
0

Una simple y manera fácil de obtener el usuario en Liferay es PortalUtil.getUser función.

User user = PortalUtil.getUser(portletRequest); 
Cuestiones relacionadas