Merge branch 'blackst0ne-rails5-fix-blob-requests-format' into 'master'
[Rails5] Explicitly set request.format for blob_controller Closes #47921 See merge request gitlab-org/gitlab-ce!19876
This commit is contained in:
commit
b7700e0963
2 changed files with 18 additions and 0 deletions
|
@ -7,6 +7,7 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
|
||||
prepend_before_action :authenticate_user!, only: [:edit]
|
||||
|
||||
before_action :set_request_format, only: [:edit, :show, :update]
|
||||
before_action :require_non_empty_project, except: [:new, :create]
|
||||
before_action :authorize_download_code!
|
||||
|
||||
|
@ -188,6 +189,18 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
.last_for_path(@repository, @ref, @path).sha
|
||||
end
|
||||
|
||||
# In Rails 4.2 if params[:format] is empty, Rails set it to :html
|
||||
# But since Rails 5.0 the framework now looks for an extension.
|
||||
# E.g. for `blob/master/CHANGELOG.md` in Rails 4 the format would be `:html`, but in Rails 5 on it'd be `:md`
|
||||
# This before_action explicitly sets the `:html` format for all requests unless `:format` is set by a client e.g. by JS for XHR requests.
|
||||
def set_request_format
|
||||
request.format = :html if set_request_format?
|
||||
end
|
||||
|
||||
def set_request_format?
|
||||
params[:id].present? && params[:format].blank? && request.format != "json"
|
||||
end
|
||||
|
||||
def show_html
|
||||
environment_params = @repository.branch_exists?(@ref) ? { ref: @ref } : { commit: @commit }
|
||||
@environment = EnvironmentsFinder.new(@project, current_user, environment_params).execute.last
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: "[Rails5] Explicitly set request.format for blob_controller"
|
||||
merge_request: 19876
|
||||
author: "@blackst0ne"
|
||||
type: fixed
|
Loading…
Reference in a new issue