audited icon indicating copy to clipboard operation
audited copied to clipboard

Fix audited on crash when run_conditional_check condition is true

Open malvads opened this issue 1 year ago • 0 comments

The function run_conditional_check crash when condition is set to true, as it tries to convert true to symbol

      def run_conditional_check(condition, matching: true)
        return true if condition.blank?
        return condition.call(self) == matching if condition.respond_to?(:call)
        return send(condition) == matching if respond_to?(condition.to_sym, true
 #<NoMethodError: undefined method `to_sym' for true:TrueClass
Did you mean?  to_s>
E, [2024-01-31T15:43:09.682642 #2655809] ERROR -- : /usr/lib/rvm/gems/ruby-2.7.5@web/gems/audited-5.4.2/lib/audited/auditor.rb:412:in `run_conditional_check'
/usr/lib/rvm/gems/ruby-2.7.5@web/gems/audited-5.4.2/lib/audited/auditor.rb:403:in `auditing_enabled'
/usr/lib/rvm/gems/ruby-2.7.5@web/gems/audited-5.4.2/lib/audited/auditor.rb:359:in `write_audit'
/usr/lib/rvm/gems/ruby-2.7.5@web/gems/audited-5.4.2/lib/audited/auditor.rb:331:in `audit_create'

a good aproach is to set return to true if condition :if is true

  audited on: [:create, :update, :destroy, :apply], if: MyApp::CONFIG[:audit_my_model]
      def run_conditional_check(condition, matching: true)
        return true if condition.blank? or condition == true
        return condition.call(self) == matching if condition.respond_to?(:call)
        return send(condition) == matching if respond_to?(condition.to_sym, true)

malvads avatar Jan 31 '24 16:01 malvads