X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/91194cf354195002d75b22468745912204d6d23f..efb3e0c81be04b2c40f131fefabd3d8bd768cb61:/app/controllers/issue_comments_controller.rb

diff --git a/app/controllers/issue_comments_controller.rb b/app/controllers/issue_comments_controller.rb
index 8d1acec75..5bf4d0237 100644
--- a/app/controllers/issue_comments_controller.rb
+++ b/app/controllers/issue_comments_controller.rb
@@ -3,17 +3,31 @@ class IssueCommentsController < ApplicationController
 
   before_action :authorize_web
   before_action :set_locale
-  before_action :require_user
-  before_action :check_permission
+  before_action :check_database_readable
+
+  authorize_resource
+
+  before_action :check_database_writable, :only => [:create]
 
   def create
     @issue = Issue.find(params[:issue_id])
     comment = @issue.comments.build(issue_comment_params)
     comment.user = current_user
     comment.save!
-    notice = t(".comment_created")
-    reassign_issue(@issue) if params[:reassign]
-    redirect_to @issue, :notice => notice
+
+    if params[:reassign]
+      reassign_issue(@issue)
+      flash[:notice] = t ".issue_reassigned"
+
+      if current_user.role? @issue.assigned_role
+        redirect_to @issue
+      else
+        redirect_to issues_path(:status => "open")
+      end
+    else
+      flash[:notice] = t(".comment_created")
+      redirect_to @issue
+    end
   end
 
   private
@@ -22,13 +36,6 @@ class IssueCommentsController < ApplicationController
     params.require(:issue_comment).permit(:body)
   end
 
-  def check_permission
-    unless current_user.administrator? || current_user.moderator?
-      flash[:error] = t("application.require_moderator_or_admin.not_a_moderator_or_admin")
-      redirect_to root_path
-    end
-  end
-
   # This sort of assumes there are only two roles
   def reassign_issue(issue)
     role = (Issue::ASSIGNED_ROLES - [issue.assigned_role]).first