Get it on Google Play

Roles y permisos en Portlets Liferay, formación Liferay

01-06-2013
 

permisosLiferay

La plataforma Liferay nos ofrece un marco muy bueno para gestionar permisos y roles. Básicamente, para entender como implementar sobre el sistema de roles y permisos hay que saber: Saber si un usuario dispone de un rol, dar de alta permisos en los portlets y saber si un usuario o rol tiene un permiso.

Para saber si un usuario tiene un determinado rol, por ejemplo el usuario actual, deberemos usar el objeto ThemeDisplay para obtener el usuario actual y las classes RoleLocalServiceUtil y UserLocalServiceUtil para obtener el rol y comprobar si lo tiene. Además de esto, el snippet siguiente crea el rol en caso que no exista en el portal(Una mejora interesante):

try {
	rolCapDeDepartament=RoleLocalServiceUtil.getRole(
			themeDisplay.getCompanyId(), 
			"cap_de_departament");
} catch (Exception e) {  }

try {			
	if ( rolCapDeDepartament==null ) {
		RoleLocalServiceUtil.addRole(
				themeDisplay.getUserId(), 
				themeDisplay.getCompanyId(), 
				"cap_de_departament", 
				null, 
				null, 
				1);
	}
			
	if ( UserLocalServiceUtil.hasRoleUser(rolCapDeDepartament.getRoleId(), themeDisplay.getUserId() ) ) {
			/* El usuario dispone del rol */
			}
/* … */

Para dar de alta un permiso en un portlet(Para que aparezca en la imagen que ilustra este post) el proceso es un poco mas largo:

Creamos el fichero: src/resource-actions/default.xml

< ?xml version="1.0"?>
<resource -action-mapping>
        <resource file="resource-actions/miportlet.xml"></resource>
</resource>

Editamos fichero y añadimos: liferay-portlet.xml

<add -default-resource>true</add> 

Creamos el fichero: src/portlet.properties

##
## Resource
##
resource.actions.configs=resource-actions/default.xml

Creamos el fichero: src/resource-actions/miportlet.xml

< ?xml version="1.0"?>
<resource -action-mapping>
        <portlet -resource>
                </portlet><portlet -name>miportlet</portlet>
                <supports>
                        <action -key>VIEW</action>
                        <action -key>CONFIGURATION</action>
                        <action -key>ALTA_REGISTRE</action>
                </supports>
                <community -defaults>
                        <action -key>VIEW</action>
                </community>
                <guest -defaults>
                        <action -key>VIEW</action>
                </guest>
                <guest -unsupported>
                        <action -key>CONFIGURATION</action>
                </guest>
        
</resource>

A partir de este momento nuestro portlet ya tiene disponible los permisos VIEW, CONFIGURATION y ALTA_REGISTRE. Finalmente, solo nos queda usar este snippet para comprobar si el usuario actual dispone de este permiso(A través de la classe PortletPermissionUtil):

if ( PortletPermissionUtil.contains(
		themeDisplay.getPermissionChecker(),
		themeDisplay.getLayout().getPlid(),
		"PermisosPortlet_WAR_PermisosPortletportlet",
		"ALTA_REGISTRE") ) {
			/* El usuario tiene el permiso */
			}

En fin, esto es todo. Me siento bastante orgulloso de este post porque creo que ayudará a bastantes desarrolladores. Por cierto, este modulo se imparte en nuestros cursos de formación Liferay

Interesado en formación Liferay?

 

Leave a Reply

© Albert Coronado Calzada