From 0f8b36f7deb0e951bb953a914a35a028f6303858 Mon Sep 17 00:00:00 2001 From: 24c02 <163450896+24c02@users.noreply.github.com> Date: Thu, 18 Dec 2025 15:10:44 -0500 Subject: [PATCH] i dunno, can you? --- app/controllers/letter/batches_controller.rb | 2 ++ app/policies/letter/batch_policy.rb | 6 ++++++ app/policies/letter/queue_policy.rb | 6 +++++- app/policies/letter_policy.rb | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/controllers/letter/batches_controller.rb b/app/controllers/letter/batches_controller.rb index 77a7c90..53b3bd2 100644 --- a/app/controllers/letter/batches_controller.rb +++ b/app/controllers/letter/batches_controller.rb @@ -95,6 +95,8 @@ class Letter::BatchesController < BaseBatchesController # Only require payment account if indicia is selected if letter_batch_params[:us_postage_type] == "indicia" || letter_batch_params[:intl_postage_type] == "indicia" + authorize @batch, :process_batch_with_indicia?, policy_class: Letter::BatchPolicy + payment_account = USPS::PaymentAccount.find_by(id: letter_batch_params[:usps_payment_account_id]) if payment_account.nil? diff --git a/app/policies/letter/batch_policy.rb b/app/policies/letter/batch_policy.rb index ad60602..dc92292 100644 --- a/app/policies/letter/batch_policy.rb +++ b/app/policies/letter/batch_policy.rb @@ -17,7 +17,13 @@ class Letter::BatchPolicy < ApplicationPolicy alias_method :set_mapping?, :map_fields? alias_method :process_form?, :map_fields? + alias_method :process_batch?, :map_fields? + + def process_batch_with_indicia? + user.present? && user.can_use_indicia? + end + alias_method :mark_printed?, :update? alias_method :mark_mailed?, :mark_printed? diff --git a/app/policies/letter/queue_policy.rb b/app/policies/letter/queue_policy.rb index 92eaeac..61441ff 100644 --- a/app/policies/letter/queue_policy.rb +++ b/app/policies/letter/queue_policy.rb @@ -9,7 +9,11 @@ class Letter::QueuePolicy < ApplicationPolicy user.present? end - alias_method :create_instant_letter?, :create_letter? + def create_instant_letter? + return false unless user.present? + return true unless record.indicia? + user.can_use_indicia? + end def batch? record_belongs_to_user || user_is_admin diff --git a/app/policies/letter_policy.rb b/app/policies/letter_policy.rb index b41daa3..bef0026 100644 --- a/app/policies/letter_policy.rb +++ b/app/policies/letter_policy.rb @@ -36,7 +36,7 @@ class LetterPolicy < ApplicationPolicy end def buy_indicia? - record_belongs_to_user || user_is_admin + user&.can_use_indicia? && (record_belongs_to_user || user_is_admin) end def mark_printed?