gitlab-org--gitlab-foss/app/controllers/projects/discussions_controller.rb
2016-07-26 15:47:19 +01:00

42 lines
954 B
Ruby

class Projects::DiscussionsController < Projects::ApplicationController
before_action :module_enabled
before_action :merge_request
before_action :discussion
before_action :authorize_resolve_discussion!
def resolve
return render_404 unless discussion.resolvable?
discussion.resolve!(current_user)
render json: {
resolved_by: discussion.resolved_by.try(:name)
}
end
def unresolve
return render_404 unless discussion.resolvable?
discussion.unresolve!
head :ok
end
private
def merge_request
@merge_request ||= @project.merge_requests.find_by!(iid: params[:merge_request_id])
end
def discussion
@discussion ||= @merge_request.discussions.find { |d| d.id == params[:id] } || render_404
end
def authorize_resolve_discussion!
access_denied! unless discussion.can_resolve?(current_user)
end
def module_enabled
render_404 unless @project.merge_requests_enabled
end
end