0

私の質問は次のとおりです:renderEditor.templateで、どのユーザーがログインしており、どのロールを持っているかを知る方法はありますか?
私がしたいこと: 私のアプリでは、ログインしたユーザーが管理者 (「ROLE_ADMIN」) のときにフィールドを変更したい - 通常のユーザーには、デフォルトで選択された html 選択タグのみのオプションがあり、管理者ユーザーがログインするときに、すべてのユーザーのリストが表示されます。

Spring Security Plugin + Grails 2.1.1 を使用しています。

私がすでに試したこと:

  1. Spring Security Service ( def springSecurityService) を追加しますが、常に null でした
  2. ブール値の引数を渡してみてください - 効果なし

どんな助けでも大歓迎です!

編集あなたの答えに感謝します。ただし、私の質問は十分に正確ではなかったので、達成したいことをよりよく説明する疑似コードをいくつか含めます (renderTemplate.template のメソッド)

private renderManyToOne(domainClass,property) {
        if (property.association) {
            def sb = new StringBuilder()
            sb << '<g:select'
            ...
            if (/*loged user is admin*/) {
                sb << ' from="${' << property.type.name << '.list()}"'
            }else{
                sb << ' from="${user}"'/*only loged user can be selected*/
            }
            ...
            sb << '/>'
            sb as String
        }
    }
4

2 に答える 2

0

春のセキュリティを備えたtaglibがあり ますhttp://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/6%20Helper%20Classes.html#6.1%20SecurityTagLib

私のアプリでは、次のように使用します。

<ul>
<sec:access expression="hasRole('ROLE_ADMIN')">
    <li><a href="#newFeedModal" role="button">Add New Feed</a></li>
</sec:access>
</ul>
于 2012-12-03T22:42:09.280 に答える
0

通常のrenderEditor.templateGSP テンプレート エンジンではレンダリングされません。SimpleTemplateEngineこれは、いくつかの単純なバインディングを備えた標準でレンダリングされます。ただし、このテンプレートの出力は GSP テンプレート エンジンでレンダリングされます。かなりややこしいですが、renderEditor.templateGSP コードを出力できます。例えば:

<%  if (property.type == Boolean || property.type == boolean)
        out << renderBooleanEditor(domainClass, property)
    else ...
    else if (property.type == String && domainInstance == 'specialField') {
        out << '''<g:if test="${org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')}">'''
        out << renderStringEditor(domainClass, property)
        out << '''</g:if>'''
        out << '''<g:else>'''
        out << renderStringSelectEditor(domainClass, property)
        out << '''</g:else>'''
    }
    ...
于 2012-12-03T23:05:40.147 に答える