Существует несколько плагинов меню grails, например плагин Navigation. Мне нужно показать пользователю только те пункты меню, которые он может получить в соответствии с его профилем пользователя. Каков самый простой способ сделать это? Есть ли плагин меню, который может интегрироваться с некоторыми плагинами безопасности Grail?Меню Grails с профилированием
1
A
ответ
2
navigation plugin имеет пример использования 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 безопасности поставляется с some tags, который будет оказывать тело тега, только если пользователь не входит в систему, с какими ролями и т. д., поэтому вы можете просто рулить свои пункты меню следующим образом:
<sec:ifAllGranted roles="ROLE_ADMIN">
// Render <g:link../> to an admin page here.
</sec:ifAllGranted>