discourse/lib/rate_limiter/limit_exceeded.rb
Bianca Nenciu 38af28d58b
FIX: Allow add email to group if user can invite (#13097)
It used to allow adding email addresses to a group even if invites were
disabled for the site. This does not allow user to input email address
if they cannot invite.

The second thing this commit improves is the message that is displayed
to the user when they hit the invite rate limit.
2021-05-21 11:34:17 +03:00

39 lines
1.0 KiB
Ruby

# frozen_string_literal: true
class RateLimiter
# A rate limit has been exceeded.
class LimitExceeded < StandardError
attr_reader :type, :available_in
def initialize(available_in, type = nil)
@available_in = available_in
@type = type
end
def time_left
@time_left ||=
if @available_in <= 3
I18n.t("rate_limiter.short_time")
elsif @available_in < 1.minute.to_i
I18n.t("rate_limiter.seconds", count: @available_in)
elsif @available_in < 1.hour.to_i
I18n.t("rate_limiter.minutes", count: (@available_in / 1.minute.to_i))
else
I18n.t("rate_limiter.hours", count: (@available_in / 1.hour.to_i))
end
end
def description
if @type.present?
type_key = @type.tr("-", "_")
msg = I18n.t("rate_limiter.by_type.#{type_key}", time_left: time_left, default: "")
return msg if msg.present?
end
I18n.t("rate_limiter.too_many_requests", time_left: time_left)
end
end
end