У вас может быть какой-то контроллер, который отвечает за логику разрешений. У вас будет система разрешений, где вы можете предоставлять определенные разрешения определенным пользователям / группам. Контроллер может быть реализован как управляемый JSF-компонент. У вас может быть такой метод:
public boolean hasPermission(PermissionKey permissionKey) {
...
}
Этот метод будет проверять роль + определенные разрешения.
PermissionKey, в этом примере, будет перечислением, но вы можете сделать его строкой или чем-то еще. Возможные значения: «DELETE_ACCOUNT» или «HANDLE_PAYMENT».
В ваших представлениях вы можете просто условно отображать такие компоненты:
<h:outputText value="some text" rendered="#{authController.hasPermission('DELETE_ACCOUNT')}" />