Grails с Spring Security Core позволяет владельцу обновляться только в GSP - PullRequest
1 голос
/ 16 мая 2011

Этот вопрос имеет некоторый код для добавления к закрытию контроллера, и это нормально, но что, если я хочу использовать стандартные представления лесов Grails, но кнопки редактирования / обновления отображаются только в том случае, если пользовательменеджер или доменный объект принадлежит пользователю? Читая документацию , я пробовал:

<sec:access expression="hasRole('ROLE_MANAGER') || (projectInstance.owner == springSecurityService.currentUser)">
   <span class="button"><g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" /></span>
</sec:access>

Но класс доступа, похоже, не позволяет ИЛИ:

Error processing GroovyPageView: Error executing tag <g:form>: Error executing tag <sec:access>: Cannot handle (124) '|' 

Кто-нибудь делал что-то подобное?

1 Ответ

4 голосов
/ 16 мая 2011

Я решил, что это глупо. Лучше всего сделать это в контроллере как:

 def edit = {
    def projectInstance = Project.get(params.id)
    def managerOrAdmin = SpringSecurityUtils.ifAnyGranted('ROLE_ADMIN,ROLE_MANAGER')
    def editable = (projectInstance.owner == springSecurityService.currentUser
                   || managerOrAdmin)
    if (!projectInstance) {
        flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'project.label', default: 'Project'), params.id])}"
        redirect(action: "list")
    }
    else {
        return [projectInstance: projectInstance, editable:editable]
    }
}

а затем в gsp сделать

<g:if test="${editable}">
  <span class="button"><g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" /></span>
</g:if>

что имеет смысл, если мы следуем хорошей программной мантре «представления должны выполнять как можно меньше логики обработки в MVC»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...