diff options
author | DeAndre Harris <dharris@gitlab.com> | 2019-07-29 09:45:20 +0000 |
---|---|---|
committer | DeAndre Harris <dharris@gitlab.com> | 2019-07-29 09:45:20 +0000 |
commit | 88b4b9bd2e8224e17ff089d2a8ea99f800686b70 (patch) | |
tree | 67e6fadf31d75860f2158c05168f160d52ae46fe /app/controllers/projects/raw_controller.rb | |
parent | 750fd7374ae67bb6ed4d9d875052bbc6d86d9b31 (diff) | |
parent | 77926ea02512d836c61a30e3986902e2d8e7f886 (diff) | |
download | gitlab-ce-docs-troubleshoot-scim.tar.gz |
Merge branch 'master' into 'docs-troubleshoot-scim'docs-troubleshoot-scim
# Conflicts:
# doc/user/group/saml_sso/scim_setup.md
Diffstat (limited to 'app/controllers/projects/raw_controller.rb')
-rw-r--r-- | app/controllers/projects/raw_controller.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb index 42ae5b0ef3c..3254229d9cb 100644 --- a/app/controllers/projects/raw_controller.rb +++ b/app/controllers/projects/raw_controller.rb @@ -8,10 +8,30 @@ class Projects::RawController < Projects::ApplicationController before_action :require_non_empty_project before_action :assign_ref_vars before_action :authorize_download_code! + before_action :show_rate_limit, only: [:show] def show @blob = @repository.blob_at(@commit.id, @path) send_blob(@repository, @blob, inline: (params[:inline] != 'false')) end + + private + + def show_rate_limit + limiter = ::Gitlab::ActionRateLimiter.new(action: :show_raw_controller) + + return unless limiter.throttled?([@project, @commit, @path], raw_blob_request_limit) + + limiter.log_request(request, :raw_blob_request_limit, current_user) + + flash[:alert] = _('You cannot access the raw file. Please wait a minute.') + redirect_to project_blob_path(@project, File.join(@ref, @path)) + end + + def raw_blob_request_limit + Gitlab::CurrentSettings + .current_application_settings + .raw_blob_request_limit + end end |