aboutsummaryrefslogblamecommitdiffstats
path: root/activemodel/lib/active_model/mass_assignment_security/sanitizer.rb
blob: 150beb1ff239814a732fabd5e9655e2e4081acfa (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                  

                               


                                                                            
                                                                           


                            
             
 



                                                                             
 


                                                                                                               


       
module ActiveModel
  module MassAssignmentSecurity
    module Sanitizer
      # Returns all attributes not denied by the authorizer.
      def sanitize(attributes)
        sanitized_attributes = attributes.reject { |key, value| deny?(key) }
        debug_protected_attribute_removal(attributes, sanitized_attributes)
        sanitized_attributes
      end

    protected

      def debug_protected_attribute_removal(attributes, sanitized_attributes)
        removed_keys = attributes.keys - sanitized_attributes.keys
        warn!(removed_keys) if removed_keys.any?
      end

      def warn!(attrs)
        self.logger.debug "WARNING: Can't mass-assign protected attributes: #{attrs.join(', ')}" if self.logger
      end
    end
  end
end