Я делаю меню на два уровня, и я хочу показать некоторые записи, если у пользователя есть определенные разрешения.ИЛИ состояние в Grails Shiro tag
Я не хочу показывать первый уровень меню, если у пользователя нет разрешений для какого-либо другого подменю, поскольку он отображает пустой список результатов.
Я положу код, чтобы лучше объяснить его. Это может быть примером меню:
Это есть способ, чтобы обернуть <ul>
как-то спросить, имеет ли пользователь foo
или bar
разрешения?
Я использую Grails 2.4.4 и Shiro плагин 1.2.1
UPDATE С РЕШЕНИЕ:
Наконец я создал новый TagLib, который расширяет ShiroTagLib и имеет нужную функцию:
class ShiroTagLib extends org.apache.shiro.grails.ShiroTagLib {
/**
* This tag only writes its body to the output if the current user
* have any of the given permissions provided in a separated comma String.
*/
def hasAnyPermission = { attrs, body ->
def permissions = attrs["permissions"]
if (!permissions){
throwTagError("Tag [hasAnyPermission] must have [permissions] attribute")
}
def permissionsList = permissions.split(',')
for (permission in permissionsList) {
if (checkPermission([permission: permission], "hasPermission")) {
// Output the body text.
out << body()
return out
}
}
}
}
с этим вы можете сделать <shiro:hasAnyPermission permissions="foo,bar">
То, как я делаю это прямо сейчас, но мне нужен метод, который будет внимательно смотреть на права пользователя, а не на роль пользователя. Что-то вроде hasAnyPermission (который не существует) –