Грааль меню с профилированием - PullRequest
1 голос
/ 30 декабря 2010

Есть несколько плагинов меню Grails, например плагин Navigation.Мне нужно показать пользователю только те пункты меню, к которым он может получить доступ в соответствии со своим профилем пользователя.Какой самый простой способ сделать это?Есть ли плагин меню, который может интегрироваться с некоторыми из плагинов безопасности Grails?

1 Ответ

2 голосов
/ 30 декабря 2010

Плагин для навигации имеет пример использования isVisible для условного скрытия пунктов меню. Если вы используете плагин Spring Security, вы можете комбинировать его с методами SpringSecurityUtils или внедренного компонента SpringSecurityService :

def springSecurityService
// ...
static navigation = [
    [group:'userOptions', action:'login', order: 0, isVisible: { SpringSecurityUtils.ifAllGranted('ROLE_ADMIN') }],
    [action:'logout', order: 99, isVisible: { springSecurityService.isLoggedIn() }]
]

В качестве альтернативы Spring Security поставляется с некоторыми тегами , которые будут отображать тело тега только в том случае, если пользователь не вошел в систему, с какими ролями и т. Д., Поэтому вы можете просто прокрутить пункты меню вручную как это:

<sec:ifAllGranted roles="ROLE_ADMIN">
  // Render <g:link../> to an admin page here.
</sec:ifAllGranted>
...