Trac/WikiAccessControl

ダウンロードはこちらから(3.0K)

 Wikiのページ毎の閲覧権限を設定するためのプラグイン。数ヶ月前に作ったまま放置状態(^^; Fine grained permissionsの存在を知っていたら作らなかったかもしれませんが、せっかく作ったのでとりあえず公開しておきます。

 プラグインの有効化はさておき、trac.iniにおいては以下のような感じの設定を行います。なお、別途、permission_policiesに、WikiAccessControlを追加しておく必要があります(例:permission_policies = WikiAccessControl, DefaultPermissionPolicy, LegacyAttachmentPolicy)。

[wikiaccesscontrols]
control_pages = testpage
testpage.action = WIKI_MODIFY
testpage.regex = testpage.*,dumm.

 上記のような設定の場合、testpageで始まるWikiページおよび、dummydumm0といったページ群(正規表現で指定。複数ある場合はカンマでつなぎます)に対して編集を行うためのコントロールtestpageが定義されます。

 この状態においては、testpageで始まるWikiページなどを編集するためには、WIKI_ACCESS_TESTPAGE という権限(iniファイルを元に自動的に権限が追加されます)を割り当てる必要があります。
 なお、actionにWIKI_VIEWが指定されている場合は、閲覧するためにその権限が必要となります(例えば、testpage.action = WIKI_VIEW,WIKI_MODIFY と指定した場合、該当ページを見るためにWIKI_ACCESS_TESTPAGE権限が必要となります)。他に、WIKI_DELETEも利用可能なので、ページによって削除可否を切り替えることも可能となります。

 複数のコントロールを作成する場合は、control_pagesに対してカンマ区切りでコントロール名を定義し、それに対するactionおよびregexをiniファイルに記述していけばOKです。
 設定が少し面倒ですが、頑張れば「基本は全員が全ページ閲覧OKだけど、あるエリアに含まれるページはリーダーしか閲覧できない」というような設定を複数作成する(チーム毎に閲覧可能なページも変わってきたりとか)など、いろいろな運用ができる・・・と思います。

※他にWIKI_ACCESS_ALLという権限もあります。この権限が割り当てられている場合は、全てのコントロールに対する権限が割り当てられていることとなります。

2010/01/23 コメントで指摘された不具合を修正しました(r244)。

2011/08/01 permission_policiesの設定が必要である旨を記載しました。

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/43705994

Listed below are links to weblogs that reference Trac/WikiAccessControl:

Comments

Fine grained permissionsはConfigObjが必要だったり、別途設定ファイルを記述しないといけないので、WikiAccessControlを使わせて頂いています。どうもありがとうございます。
ただ、accesscontrol.pyの91行目のbreakでforを抜けても、一番外側のforが回ると変数wの値が書きかわり、意図した通りの権限が設定されないようです。
その部分を直し、(+チケットの細かい権限設定のプラグインもセットにして)下記サイトで公開しております。
http://sourceforge.jp/projects/shibuya-trac/wiki/plugins%2FAccessControlPlugin

Posted by: wadahiro | 2009.10.27 at 01:15

ご返信が遅くなりましたが、ご利用ありがとうございます&ご指摘ありがとうございました。

私の公開しているプラグインに関しても、breakの挙動が正しくなかった部分を修正したものに差し替えました。

Posted by: syo | 2010.01.23 at 21:50

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.