2
1
0
1 回答
- 321
https://docs.atlassian.com/atlassian-user/2.0/apidocs/com/atlassian/user/GroupManager.html
より。groupManagerでユーザーが実際にそのグループに所属しているかチェックしたほうが効率がいいかと。
以下のような形ですかね。
何かチェックボックス等で表示・非表示をコントロールする必要がなければ、JavaScriptでの対応も必要ないかと思いますよ。
## Macro has a body: Y ## @param ShowGroup:title=表示するグループ|type=string|required=true|desc=ここで設定したグループにのみ表示 #set($containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager')) #set($getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null)) #set($containerManager = $getInstanceMethod.invoke(null,null)) #set($containerContext = $containerManager.containerContext) #set($groupManager = $containerContext.getComponent('groupManager')) #set($user = $userAccessor.getUser($action.remoteUser.name)) #set($group = $groupManager.getGroup($paramShowGroup)) #if ($user && $group && $groupManager.hasMembership($group, $user)) <div id="hide-box-macro">$body</div> #end
関連アドオン
Redaction, Protect High Security Content 今回の要件に似ているアドオン
Language Add-on ユーザーが利用している言語にあわせてページ表示内容を変えたい場合
Secure Content パスワードロック
Security and Encryption パスワードロック&暗号化
Crypto パスワードロック&暗号化?
- RYOITO
ありがとうございます。
hasMembership
()いい感じですね。そうでした。確かにそもそもHTML化も要らないですね。
私のテスト環境で
$groupManager
を使うと怒られたので、以下に収まりました。## Macro has a body: Y ## @param ShowGroup:title=表示するグループ|type=string|required=true|desc=ここで設定したグループにのみ表示 #set($user = $userAccessor.getUser($action.remoteUser.name)) #set($group = $userAccessor.getGroup($paramShowGroup)) #if ($user && $group && $userAccessor.hasMembership($group, $user)) <div>$body</div> #end
- Kengo Ohsaki
userAccessor だけでいけましたね。失礼しました。よかったです。
コメントを追加...
特定のグループにだけ必要な情報を記載した箇所があり、そのグループ以外には邪魔なので非表示にしたいと思って、以下のようなユーザマクロを作ってみたのですが、どうにも判断してくれません。
Currentユーザが特定グループに属しているか、どう判断すればよいのですか?
載せたコードおかしいですね。
テスト時色々条件変えていて、戻し忘れました。
#
if
($flg ==
"
false
")ですね…