- TracFineGrainedPermissions The Trac Project
- tags/trac-0.11.7/sample-plugins/permissions の authz_policy.py The Trac Project
- wiki ページを閲覧・編集権限をユーザごとに決めることができる
- Trac0.11 からオプションで搭載された機能。Trac0.12 では標準搭載されている。
インストール方法
# easy_install configobj
# cd $TRAC_ENV/projectname/plugins
# wget http://trac.edgewall.org/export/10955/tags/trac-0.11.7/sample-plugins/permissions/authz_policy.py
trac.ini の設定
# vi conf/trac.ini
[authz_policy]
authz_file = conf/authzpolicy.conf
[components]
authz_policy.* = enabled
[trac]
permission_policies = AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
authzpolicy.conf の設定
権限を記述するファイル。trac.ini で指定した場所に置いておく。
サンプルはhttp://swapoff.org/files/authzpolicy.confにある。
このまま authzpolicy.conf を編集すればさくっといくと思ったが、
意外なところでつまずいてしまった。
正規表現を使って制限範囲を指定する場合、気をつけたい点は記述する順番!
正規表現で指定した範囲がかぶっていると、上の設定を是を見るようになっている。
制限に正規表現を使うときの注意点サンプル
デフォルトのパーミッションで anonymous に WIKI_VIEW をつけておらず、
すべてのユーザに PrivatePage 関係の wiki 以外、
全部の wiki を見られるように権限をつけたい場合の話。
#デフォルトのパーミッションつけろよといいたいがサンプルなので。。。
下記の設定を見ると、
まずすべてのユーザにすべての wiki を見られる権限を与えてから、
PrivatePage だけ見られないようにしているようにみえる。
だが残念ながら PrivatePage はだれでも閲覧が可能になっている。
#PrivatePage の john 以外のところを!WIKI_VIEW にしたが効果はなかった。
[wiki:*]
* = WIKI_VIEW
[wiki:PrivatePage@*]
john = WIKI_VIEW
* =
別の例を出すと、PrivatePage は john にしか見せたくないが、
その記述の上に頭に Private がつくページを jack はすべてみることができる設定を書くと、
jack は PrivatePage も見ることができてしまう。
[wiki:Private*]
jack = WIKI_VIEW
* =
[wiki:PrivatePage@*]
john = WIKI_VIEW
* =
そこで、上記の設定を逆に書いてみたらうまくいった。
予想だがはじめにすべて許可してしまうと、あとの設定は読まないのではないかと。
なのでちょっと気持ち悪いが、粒度が細かい制限したい項目を先に書いておく必要がある。
[wiki:PrivatePage@*]
john = WIKI_VIEW
* =
[wiki:Private*]
jack = WIKI_VIEW
* =
[wiki:*]
* = WIKI_VIEW