私はSpring Securityを使用しています。User
に属するがあるとしましょうStore
。にはStore
、オンライン ショップがあるかどうかを決定するプロパティがあります。
class Store {
...
boolean isOnline
...
}
class User {
...
def belongsTo = [ store: Store ]
...
}
Store
すべての単一ページに表示されるグローバル ナビゲーション バー テンプレートで、現在ログインしているユーザーがオンライン ショッピング可能である場合にリンクを表示したいと考えています。現在、ツールバー テンプレートでこのコードを使用しています。
<g:set var="userId" value="${sec.loggedInUserInfo(field: 'id') as Long}"/>
<g:set var="user" value="${User.get(userId)}"/>
<g:if test="${user.store.isOnline}">
<li>
<g:link controller="store" action="redirect">Shop Online</g:link>
</li>
</g:if>
このコードは機能しますが、このロジックを処理するより良い方法はありますか? 私は、すべてのページ レンダリングに対してこのコードを実行しているのが特に好きではありませんUser.get()
。また、ビューで直接使用しているのも特に好きではありません。
言い換えれば、実際のオブジェクトspringSecurityService.currentUser
を取得してその関係をたどることができるビューに相当するものはありますか?User