1. 18 7月, 2015 3 次提交
    • A
      remove useless function · cb3f2559
      Aaron Patterson 提交于
      Now that the value is cached on the stack,
      `array_of_permitted_scalars_filter` is exactly the same as
      `array_of_permitted_scalars?`, so lets just have one
      cb3f2559
    • A
      stop passing `params` to `array_of_permitted_scalars_filter` · 2df8e86c
      Aaron Patterson 提交于
      this way the method doesn't have to know what the new params object is,
      it just yields to a block.  This change also caches the value of
      `self[key]` on the stack
      2df8e86c
    • A
      push key checking up · 55d0e6f8
      Aaron Patterson 提交于
      We should disconnect `array_of_permitted_scalars_filter` from the
      instance so that we can make hash filtering functional.  For now, pull
      the conditional up out of that method
      55d0e6f8
  2. 16 7月, 2015 2 次提交
  3. 15 7月, 2015 1 次提交
    • P
      Make AC::Parameters not inherited from Hash · 14a3bd52
      Prem Sichanugrist 提交于
      This is another take at #14384 as we decided to wait until `master` is
      targeting Rails 5.0. This commit is implementation-complete, as it
      guarantees that all the public methods on the hash-inherited Parameters
      are still working (based on test case). We can decide to follow-up later
      if we want to remove some methods out from Parameters.
      14a3bd52
  4. 22 6月, 2015 2 次提交
  5. 06 4月, 2015 1 次提交
  6. 28 3月, 2015 1 次提交
    • S
      Return super in ActionController::Parameters.const_missing · 1b0526ea
      Shuhei Kagawa 提交于
      The current implementation of ActionController::Parameters.const_missing
      returns `ActionController::Parameters.always_permitted_parameters` even
      if its `super` returns a constant without raising error. This prevents its
      subclass in a autoloading module/class from taking advantage of
      autoloading constants.
      
          class SomeParameters < ActionController::Parameters
            def do_something
              DefinedSomewhere.do_something
            end
          end
      
      In the code above, `DefinedSomewhere` is to be autoloaded with
      `Module.const_missing` but `ActionController::Parameters.const_missing`
      returns `always_permitted_parameters` instead of the autoloaded
      constant.
      
      This pull request fixes the issue respecting `const_missing`'s `super`.
      1b0526ea
  7. 28 2月, 2015 1 次提交
  8. 19 12月, 2014 1 次提交
  9. 12 12月, 2014 2 次提交
  10. 29 10月, 2014 1 次提交
    • X
      let's warn with heredocs · b3bfa361
      Xavier Noria 提交于
      The current style for warning messages without newlines uses
      concatenation of string literals with manual trailing spaces
      where needed.
      
      Heredocs have better readability, and with `squish` we can still
      produce a single line.
      
      This is a similar use case to the one that motivated defining
      `strip_heredoc`, heredocs are super clean.
      b3bfa361
  11. 19 8月, 2014 5 次提交
    • P
      User `#to_hash` instead of calling `super` · 3fcbbc8a
      Prem Sichanugrist 提交于
      Ruby 1.9.3 does not implement Hash#to_h, so we can't call `super` on it.
      3fcbbc8a
    • P
      Fix failing test on several methods on Parameter · 3591dd59
      Prem Sichanugrist 提交于
      * `each`
      * `each_pair`
      * `delete`
      * `select!`
      3591dd59
    • P
      9704379c
    • P
      Add missing `Hash` methods to `AC::Parameters` · bd7f4719
      Prem Sichanugrist 提交于
      This is to make sure that `permitted` status is maintained on the
      resulting object.
      
      I found these methods that needs to be redefined by looking for
      `self.class.new` in the code.
      
      * extract!
      * transform_keys
      * transform_values
      bd7f4719
    • P
      Make `AC::Params#to_h` return Hash with safe keys · 5109740c
      Prem Sichanugrist 提交于
      `ActionController::Parameters#to_h` now returns a `Hash` with
      unpermitted keys removed. This change is to reflect on a security
      concern where some method performed on an `ActionController::Parameters`
      may yield a `Hash` object which does not maintain `permitted?` status.
      If you would like to get a `Hash` with all the keys intact, duplicate
      and mark it as permitted before calling `#to_h`.
      
          params = ActionController::Parameters.new(name: 'Senjougahara Hitagi')
          params.to_h # => {}
      
          unsafe_params = params.dup.permit!
          unsafe_params.to_h # => {"name"=>"Senjougahara Hitagi"}
      
          safe_params = params.permit(:name)
          safe_params.to_h # => {"name"=>"Senjougahara Hitagi"}
      
      This change is consider a stopgap as we cannot chage the code to stop
      `ActionController::Parameters` to inherit from
      `HashWithIndifferentAccess` in the next minor release.
      
      Also, adding a CHANGELOG entry to mention that
      `ActionController::Parameters` will not inheriting from
      `HashWithIndifferentAccess` in the next major version.
      5109740c
  12. 28 6月, 2014 1 次提交
  13. 27 6月, 2014 1 次提交
  14. 14 6月, 2014 1 次提交
  15. 07 6月, 2014 2 次提交
    • X
      f84d081f
    • X
      Revert "Convert StrongParameters cache to a hash. This fixes an unbounded" · 1ecada20
      Xavier Noria 提交于
      We cannot cache keys because arrays are mutable. We rather want to cache
      the arrays. This behaviour is tailor-made for the usage pattern strongs
      params is designed for.
      
      In a forthcoming commit I am going to add a test that covers why we need
      to cache by value.
      
      Every strong params instance has a live span of a request, the cache goes
      away with the object. Since strong params have such a concrete intention,
      it would be interesting to see if there are actually any real-world use
      cases that are an actual leak, one that practically may matter.
      
      I am not convinced that the theoretical leak has any practical consequences,
      but if it can be shown there are, then I believe we should either get rid of
      the cache (which is an optimization), or else wipe it in the mutating API.
      
      This reverts commit e63be276.
      1ecada20
  16. 06 6月, 2014 1 次提交
  17. 04 6月, 2014 1 次提交
  18. 31 3月, 2014 1 次提交
  19. 24 2月, 2014 1 次提交
  20. 24 12月, 2013 1 次提交
  21. 21 12月, 2013 3 次提交
  22. 03 11月, 2013 2 次提交
  23. 27 10月, 2013 1 次提交
  24. 27 9月, 2013 1 次提交
  25. 07 9月, 2013 1 次提交
  26. 30 8月, 2013 1 次提交
  27. 05 8月, 2013 1 次提交