Creación de un plugin de tipo hook en Liferay

0
19313

Creación de un plugin de tipo hook en Liferay

0. Índice de
contenidos.

1. Introducción

Los plugins de tipo hook (“gancho”) se utilizan en Liferay para añadir determinada funcionalidad cuando se producen ciertos eventos. Estos eventos donde podemos enganchar funcionalidad son:

  • Application Startup Events (application.startup.events)
  • Login Events (login.events.pre, login.event.post)
  • Service Events (servlet.service.events.pre, servlet.service.events.post)

Para ilustar este tutorial vamos a utilizar “login.events.pre” con el fin de securizar el acceso a nuestro portal sólo permitiendo acceder a los usuarios de rol “Administrador” desde IPs que estén dentro de una lista de IPs permitidas. Esto es muy útil para evitar el ataque de administradores resentidos desde la privacidad de un ciber-cafe.

2. Entorno.

El tutorial está
escrito usando el siguiente entorno:

  • Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM, 320 GB HD).
  • Sistema operativo: Ubuntu 9.04.
  • Liferay Plugins SDK 5.2.3
  • Liferay Portal 5.2.3

3. Manos a la obra.

Para comenzar a desarrollar un plugin antes tenemos que contar con el SDK de Liferay. Aquí tenéis un tutorial donde se habla del tema: https://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=LiferayPluginsSDK.>

Una vez cumplido este requisito, lo que tenemos que hacer es situarnos en la carpeta %LIFERAY_SDK%/hooks donde, para nuestro asombro, nos damos cuenta que a los compañeros de Liferay se les ha olvidado añadir el script create que si que cuentan el resto de plugins (ya os había dicho que estos plugins no son muy conocidos), así que habrá que hacerlo a mano.

Lo primero es crear una carpeta con el nombre de nuestro proyecto “sample-post-login-hook” dentro de %LIFERAY_SDK%/hooks. Acto seguido nos metemos dentro de esta carpeta y creamos el fichero “build.xml” con el siguiente contenido:

Ahora creamos la estructura de carpeta docroot/WEB-INF/src a partir de la carpeta creada en el paso anterior. Dentro de la carpeta WEB-INF creamos el fichero “liferay-hook.xml” con el siguiente contenido:

En este fichero le indicamos el evento que tiene que esperar y la clase que va a incluir la funcionalidad cuando se produzca el evento. Ahora importamos el proyecto a un IDE como Eclipse que nos facilita la edición de la clase. Para ello abrimos Eclipse y vamos a New –> Project –> Dynamic Web Project en “Portlet Name” ponemos el nombre del proyecto y desmarcamos la casilla “Use default” con la ayuda del botón “Browser” seleccionamos la carpeta %LIFERAY_SDK%/hooks/sample-post-login-hook y pulsamos en “Next”. En la siguiente pantalla volvemos a pulsar en “Next” y en la siguiente cambiamos el “Content directory” a “docroot” en vez de “WebContent” y pulsamos en “Finish”.

Ahora, dentro de Eclipse, vamos a establecer cual va a ser la ruta de nuestros ficheros fuente, para ello pinchando con el botón derecho sobre la raíz del proyecto seleccionamos New –> Source Folder y en el campo “Folder Name” con la ayuda del botón “Browser” seleccionamos la carpeta docroot/WEB-INF/src y pulsamos en “Finish”. Lo siguiente que podemos hacer es eliminar la carpeta “src” que venía por defecto en el proyecto.

Ya tenemos todo preparado para comenzar a implementar nuestra clase a la que llamaremos “SamplePostLogin”. Para ello con el botón derecho sobre la carpeta de fuentes “docroot/WEB-INF/src” seleccionamos “New” –> “Class”. En asistente que se muestra establecemos “Name” con el texto “SamplePostLogin” y “Package” con “com.autentia.training” y pulsamos en “Finish”.

A continuación escribimos el código de nuestra funcionalidad. Para no complicar innecesariamente el ejemplo, la lista de ips permitidas se establece en el propio código. Obviamente para una solución más “real” se debería utilizar un fichero .properties, además otra buena idea es establecer rangos de Ips permitidas para no tener que poner las ips una a una. A continuación se muestra el código de la clase autocomentado:

Sólo nos falta un pequeño detalle. Dentro de la carpeta WEB-INF creamos el fichero “liferay-plugin-package.properties” donde vamos establecer la versión del plugin con la siguiente línea:

Ahora abrimos un terminal, nos situamos en la carpeta %LIFERAY_SDK%/hooks/sample-post-login-hook y tecleamos “ant deploy”. Esto también se puede hacer desde el propio Eclipse arrastrando el fichero build.xml a la vista de “Ant”.

Si todo ha ido bien y tenemos Liferay arrancado podremos ver el despliegue en caliente. Ahora comprobamos que la funcionalidad realmente se produce como nosotros queremos, es decir, que el portal sólo nos deja logarnos como administradores si nuestra IP es una de la permitadas, en caso contrario no debería logarnos como administradores.

4. Conclusiones.

Esta es una técnica más que Liferay ofrece para poder añadir más funcionalidad al portal sorteando al tan temido (por lo menos por mi) entorno EXT que no hace más que complicar los desarrollos y sobre todo las migraciones. Como veis Liferay es una caja llena de sorpresas que desde Autentia estamos encantados de descubrir para ir mejorando nuestros cursos de formación.

Dudas o sugerencias de nuevos tutoriales en la zona de comentarios.

Saludos

Dejar respuesta

Please enter your comment!
Please enter your name here