Files
chatwoot/lib/custom_exceptions/account.rb
T
Sony Mathew 0c6ee49216 fix: enforce email limits for agent invitations
Atomically reserve Chatwoot Cloud account email capacity before sending new agent invitations, including bulk creation, and roll back with HTTP 429 when the limit is exhausted.
2026-07-20 18:48:33 +05:30

60 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module CustomExceptions::Account
class InvalidEmail < CustomExceptions::Base
def message
if @data[:domain_blocked]
I18n.t 'errors.signup.blocked_domain'
elsif @data[:disposable]
I18n.t 'errors.signup.disposable_email'
elsif !@data[:valid]
I18n.t 'errors.signup.invalid_email'
end
end
end
class UserExists < CustomExceptions::Base
def message
I18n.t('errors.signup.email_already_exists', email: @data[:email])
end
end
class InvalidParams < CustomExceptions::Base
def message
I18n.t 'errors.signup.invalid_params'
end
end
class UserErrors < CustomExceptions::Base
def message
@data[:errors].full_messages.join(',')
end
end
class SignupFailed < CustomExceptions::Base
def message
I18n.t 'errors.signup.failed'
end
end
class PlanUpgradeRequired < CustomExceptions::Base
def message
I18n.t 'errors.plan_upgrade_required.failed'
end
end
class EmailLimitExceeded < CustomExceptions::Base
def message
I18n.t('errors.account.email_limit_exceeded')
end
def to_hash
{ error: message }
end
def http_status
:too_many_requests
end
end
end