2011年04月17日
Trac でユーザ定義の「権限」を追加する
最近、仕事で Trac サーバを立ち上げる機会があったので、コネタを一つ。ユーザ定義の「権限(TICKET_VIEW などの類)」の追加の仕方。
この手の BTSを会社で使おうと思うと、チケットをアサインされた人がチケットをクローズした後に、プロジェクト・マネージャが「クローズを承認」するというワークフローにしたくなる。ワークフローのカスタマイズ自体は Trac 0.11 くらいからすでにかなり柔軟にできるのだが、しかし、マネージャ用に新しく「承認権限」を作りたいと思うと、結構なコード量のプラグインを入れたりして、なかなか面倒だった。
Trac 0.12 では ExtraPermissionProvider というコンポーネントがデフォルトで組み込まれており、ユーザ権限を自由に追加できる。コンポーネントはデフォルトで無効になっているため、trac.ini の [component] セクションに
と書く。または AdminModule が入っていれば、ウェブの管理画面、プラグインのページから、Trac 0.12.x 内にある上のコンポーネントを有効にする。[component] tracopt.perm.config_perm_provider.extrapermissionsprovider = enabled
あとは、trac.ini の [extra-permissions] セクションにに追加したい権限を記述するだけ。
[extra-permissions] # TICKET_REIVIEW 権限を追加。 # 既存の TICKET_ADMIN 権限が TICKET_REVIEW 権限を含むようになる。 ticket_admin = ticket_review # 上のマニュアルにある例。EXTRA_VIEW、MODIFY、DELETE の3権限を作った上で、 # EXTRA_ADMIN という 3権限を含む権限を新たに作る extra_admin = extra_view, extra_modify, extra_delete # 上のマニュアルにある例。ADMIN 系のメタ権限を作りたくない場合は、 # 等号の左側を '_' ではじめる。 _perms = extra_view, extra_modify