45 lines
1 KiB
Ruby
45 lines
1 KiB
Ruby
class IssueCommentsController < ApplicationController
|
|
layout "site"
|
|
|
|
before_action :authorize_web
|
|
before_action :set_locale
|
|
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!
|
|
|
|
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
|
|
|
|
def issue_comment_params
|
|
params.require(:issue_comment).permit(:body)
|
|
end
|
|
|
|
# This sort of assumes there are only two roles
|
|
def reassign_issue(issue)
|
|
role = (Issue::ASSIGNED_ROLES - [issue.assigned_role]).first
|
|
issue.assigned_role = role
|
|
issue.save!
|
|
end
|
|
end
|