@@ 332,16 332,21 @@ class OverLimit < StandardError
end
end
+class CustomerExpired < StandardError; end
+
message do |m|
StatsD.increment("message")
sentry_hub = new_sentry_hub(m, name: "message")
today = Time.now.utc.to_date
- CustomerRepo
- .new(set_user: sentry_hub.current_scope.method(:set_user))
+ CustomerRepo.new(set_user: sentry_hub.current_scope.method(:set_user))
.find_by_jid(m.from.stripped).then { |customer|
next customer.stanza_from(m) unless billable_message(m)
+ if customer.plan_name && !customer.active?
+ raise CustomerExpired, "Your account is expired, please top up"
+ end
+
EMPromise.all([
TrustLevelRepo.new.find(customer),
customer.message_usage((today..today))
@@ 349,14 354,13 @@ message do |m|
raise OverLimit.new(customer, usage) unless tl.send_message?(usage)
}.then do
EMPromise.all([
- customer.incr_message_usage,
- customer.stanza_from(m)
+ customer.incr_message_usage, customer.stanza_from(m)
])
end
}.catch_only(OverLimit) { |e|
e.notify_admin
BLATHER << m.as_error("policy-violation", :wait, e.message)
- }.catch_only(CustomerRepo::NotFound) { |e|
+ }.catch_only(CustomerRepo::NotFound, CustomerExpired) { |e|
BLATHER << m.as_error("forbidden", :auth, e.message)
}.catch { |e| panic(e, sentry_hub) }
end