Redmineでニュースの参照可否を制御する(patch適用)

Redmine 3.3時点では、ニュースの参照に関する権限が無く、一部のユーザにニュースを見せないということが出来ません。

それをつぶやいたところ、前田さんにRedmine本家のFeatureにあがっていて、3.4.0で入るかもといった情報を頂いたので、先行してパッチを当てて試してみました。

パッチの内容

現時点のパッチは下記になっています。

軽微な変更だったのと、最新じゃないバージョンに当てたかったので、手作業で差分当てました。下記の3ファイル(合計3行)さえ直せば、すぐに試せます。(日本語の表示確認してなくて良ければ、ja.ymlもいらないです)

  • config/locales/en.yml
diff --git a/config/locales/en.yml b/config/locales/en.yml
index a8eca2dfe..f2a8cbc0b 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -497,6 +497,7 @@ en:
   permission_view_time_entries: View spent time
   permission_edit_time_entries: Edit time logs
   permission_edit_own_time_entries: Edit own time logs
+  permission_view_news: View news
   permission_manage_news: Manage news
   permission_comment_news: Comment news
   permission_view_documents: View documents
  • config/locales/ja.yml
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index a018e7240..8d1ae6ce1 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -427,6 +427,7 @@ ja:
   permission_edit_time_entries: 作業時間の編集
   permission_edit_own_time_entries: 自身が記入した作業時間の編集
   permission_manage_project_activities: 作業分類 (時間管理) の管理
+  permission_view_news: ニュースの閲覧
   permission_manage_news: ニュースの管理
   permission_comment_news: ニュースへのコメント
   permission_view_documents: 文書の閲覧
  • lib/redmine.rb
diff --git a/lib/redmine.rb b/lib/redmine.rb
index e3ff60fd1..204429cc6 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -131,7 +131,7 @@ Redmine::AccessControl.map do |map|
   end
 
   map.project_module :news do |map|
-    map.permission :view_news, {:news => [:index, :show]}, :public => true, :read => true
+    map.permission :view_news, {:news => [:index, :show]}, :read => true
     map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy], :attachments => :upload}, :require => :member
     map.permission :comment_news, {:comments => :create}
   end

対応後の画面

ロールの編集画面に「ニュースの閲覧」という権限が追加されて、制御可能になりました。実際のニュースの表示もばっちりです。

f:id:onozaty:20170514004703p:plain