2010-12-30 2 views
1

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

ответ

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>