RichFaces rich:isUserInRole function

I blogged earlier about four built-in RichFaces functions that come in very handy, especially the rich:component(id) one. Many rich components (from rich;* tag library) provide client-side JavaScript API. To access this API, you need to use rich:component(id) and add the JavaScript method name, such as: #{rich:component(‘id’)}.someMethod(). For example, go to rich:listShuttle component in RichFaces Developers Guide and scroll to ReferenceData/JavaScript API section. That’s the JavaScript API you can call on this component.

There is one more, less known function available in RichFaces. It’s called rich:isUserInRole(role). It lets you define security roles in web.xml file and then use the role on a page. For example, suppose only the administrator should see some part of a page:

<rich:panel header="Admin panel" rendered="#{rich:isUserInRole('admin')}">
  Very sensitive information
</rich:panel>
 
<rich:panel header="User panel">
   General information
</rich:panel>

In the above example, unless you were authenticated as ‘amdin’, you will not see the top panel. Of course you need the security role in web.xml file. It’s a nice and handy feature to have available.

4 comments

  1. Thiago Pires

    Very good article. That was what I was looking for, but when I tried, it didn’t work
    this is the error:
    javax.servlet.ServletException: Function ‘rich:isUserInRole’ not found

    I tried using rich:menuItem:

    Do you Know why I doesn’t work?

  2. Bishnu (BJP)

    Is this possible to take the user role dynamically?

    like rendered=”#{rich:isUserInRole(bean.getRole())}” instead of
    rendered=”#{rich:isUserInRole(‘admin’)}”

  3. max

    This will work:

    #{rich:isUserInRole(bean.role)}

    inside the bean you need to have getRole(). Calling a method might only be possible with JBoss EL extension (or in JSF 2).

Leave a Reply