Module: CheckRateLimit
- Included in:
- ApplicationController
- Defined in:
- app/controllers/concerns/check_rate_limit.rb
Overview
CheckRateLimit
Controller concern that checks if the rate limit for a given action is throttled by calling the Gitlab::ApplicationRateLimiter class. If the action is throttled for the current user, the request will be logged and an error message will be rendered with a Too Many Requests response status. See lib/api/helpers/rate_limiter.rb for API version
Instance Method Summary collapse
Instance Method Details
#check_rate_limit!(key, scope:, redirect_back: false, **options) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'app/controllers/concerns/check_rate_limit.rb', line 10 def check_rate_limit!(key, scope:, redirect_back: false, **) return unless Gitlab::ApplicationRateLimiter.throttled_request?(request, current_user, key, scope: scope, **) return yield if block_given? = _('This endpoint has been requested too many times. Try again later.') if redirect_back redirect_back_or_default(options: { alert: }) else render plain: , status: :too_many_requests end end |