« XML-RPCを用いて添付ファイルの一括アップロードを行う | Main | チケットのテンプレートを管理するTicketExtPlugin »

2010.01.12

Tracで添付ファイルの削除権限を分離する

Trac0.11でpermission_policiesLegacyAttachmentPolicyを有効にしている場合、添付ファイルの削除を行う場合は以下のような感じの権限設定になります。

Wikiページの添付ファイル ⇒ 要WIKI_DELETE権限
Ticketの添付ファイル ⇒ 要TICKET_ADMIN権限
マイルストーンの添付ファイル ⇒ 要MILESTONE_DELETE権限

結果として、例えばWikiページにおいて、「添付ファイルの削除はできるがWikiページの削除はできない」というような権限設定を行うことはできません。

ってことで、LegacyAttachmentPolicyを使用した状態で、添付ファイルの削除権限を分離できるようにTrac本体をカスタマイズ。本来は、Plugin等で作成して、Trac本体を修正せずに済ませたいところなのですが・・・。

attachment.py

'ATTACHMENT_DELETE': {'ticket': 'TICKET_ADMIN', 'wiki': 'WIKI_DELETE',
  'milestone': 'MILESTONE_DELETE'},

の部分を、以下のような感じで書き換え。要は、必要となる権限を変えてしまうわけですね。
'ATTACHMENT_DELETE': {'ticket': 'TICKET_ATTACHMENT_DELETE', 'wiki': 'WIKI_ATTACHMENT_DELETE',
  'milestone': 'MILESTONE_ATTACHMENT_DELETE'},

ticket/api.py

return ['TICKET_APPEND', 'TICKET_CREATE', 'TICKET_CHGPROP',
  'TICKET_VIEW', 'TICKET_EDIT_CC', 'TICKET_EDIT_DESCRIPTION',
  'TICKET_EDIT_REPORTER', 'TICKET_MAIL_SEND',
  ('TICKET_MODIFY', ['TICKET_APPEND', 'TICKET_CHGPROP']),
  ('TICKET_ADMIN', ['TICKET_CREATE', 'TICKET_MODIFY',
    'TICKET_VIEW', 'TICKET_EDIT_CC',
    'TICKET_EDIT_REPORTER', 'TICKET_MAIL_SEND',
    'TICKET_EDIT_DESCRIPTION'])]

の権限設定を行っている部分を、以下のように書き換え(権限を追加し、追加した権限をTICKET_ADMINにも追加。
return ['TICKET_APPEND', 'TICKET_CREATE', 'TICKET_CHGPROP',
  'TICKET_VIEW', 'TICKET_EDIT_CC', 'TICKET_EDIT_DESCRIPTION',
  'TICKET_EDIT_REPORTER', 'TICKET_MAIL_SEND', 'TICKET_ATTACHMENT_DELETE',
  ('TICKET_MODIFY', ['TICKET_APPEND', 'TICKET_CHGPROP']),
  ('TICKET_ADMIN', ['TICKET_CREATE', 'TICKET_MODIFY',
    'TICKET_VIEW', 'TICKET_EDIT_CC',
    'TICKET_EDIT_REPORTER', 'TICKET_MAIL_SEND',
    'TICKET_EDIT_DESCRIPTION', 'TICKET_ATTACHMENT_DELETE'])]

ticket/roadmap.py

actions = ['MILESTONE_CREATE', 'MILESTONE_DELETE', 'MILESTONE_MODIFY',
  'MILESTONE_VIEW']

の部分を、以下のように書き換え。
actions = ['MILESTONE_CREATE', 'MILESTONE_DELETE', 'MILESTONE_MODIFY',
  'MILESTONE_VIEW', 'MILESTONE_ATTACHMENT_DELETE']

wiki/web_ui.py

actions = ['WIKI_CREATE', 'WIKI_DELETE', 'WIKI_MODIFY', 'WIKI_VIEW']

の部分を、以下のように書き換え。
actions = ['WIKI_CREATE', 'WIKI_DELETE', 'WIKI_MODIFY', 'WIKI_VIEW', 'WIKI_ATTACHMENT_DELETE']

こんな感じで手を加えると、とりあえず添付ファイルの削除権限のみを分離することができます。
あとは、削除可能なユーザーに対して、追加された権限を割り当ててあげればOK。

#ちなみに、LegacyAttachmentPolicyを使用しない場合の設定がよくわかってなかったりします・・・。

|

« XML-RPCを用いて添付ファイルの一括アップロードを行う | Main | チケットのテンプレートを管理するTicketExtPlugin »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


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



TrackBack


Listed below are links to weblogs that reference Tracで添付ファイルの削除権限を分離する:

« XML-RPCを用いて添付ファイルの一括アップロードを行う | Main | チケットのテンプレートを管理するTicketExtPlugin »