Imagine that you bought a really nice electric guitar. Now imagine that you bought an even nicer amplifier to go along with it. You get them home, and much to the chagrin of your neighbors, you get ready to rock! Much to your chagrin, however, your neighbors’ ears are saved. You forgot to get a cable to plug the guitar into the amplifier. Bummer. This is essentially what happens when you add permissions to your portlet but don’t expose the UI to users: the permissions exist but they’re not configurable.
On the portlet level, no code needs to be written in order to have the permission system work for your portlet. If you’ve defined any permissions (supported actions) in your configuration file’s
portlet-resource tag, they’re automatically added to a list of permissions that are displayed by Liferay’s permissions UI. What good, however, are permissions that exist but can’t be configured?
This tutorial covers exposing your portlet permissions to users. Get ready to rock!
To allow permissions to be configured for model resources, you must add the permissions interface to the UI. Just add these two Liferay UI tags to your JSP:
<liferay-security:permissionsURL>: Returns a URL to the permission settings configuration page.
<liferay-ui:icon>: Shows an icon to the user. These are defined in the theme and one of them (see below) is used for permissions.
This example demonstrates the use of both tags; it comes from the
guestbook_actions.jsp file of the Guestbook portlet.
<liferay-security:permissionsURL modelResource="<%= Entry.class.getName() %>" modelResourceDescription="<%= entry.getMessage() %>" resourcePrimKey="<%= String.valueOf(entry.getEntryId()) %>" var="permissionsURL" /> <liferay-ui:icon image="permissions" url="<%= permissionsURL %>" />
<liferay-security:permissionsURL /> tag, specify these attributes:
modelResource: The fully qualified class name of the entity class. This class name gets translated into a more readable name as specified in
Language.properties: The entity class in the example above is the guestbook entry class for which the fully qualified class name is
modelResourceDescription: You can enter anything that best describes this model instance. In the example above, the guestbook entry message is used for the model resource description.
resourcePrimKey: The primary key of your entity.
var: Specifies the name of the variable to which the resulting URL string is assigned. The variable is then passed to the
<liferay-ui:icon> tag so the permission icon has the proper URL link.
There’s an optional attribute called
redirect that’s available if you want to override the default behavior of the upper right arrow link. That’s it; now your users can configure the permission settings for model resources!