warden 1.2.7 → 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +6 -0
- data/.rspec +3 -0
- data/{History.rdoc → CHANGELOG.md} +74 -39
- data/Gemfile +2 -2
- data/LICENSE +2 -1
- data/README.md +18 -0
- data/Rakefile +3 -8
- data/lib/warden/config.rb +1 -1
- data/lib/warden/errors.rb +2 -2
- data/lib/warden/hooks.rb +1 -1
- data/lib/warden/manager.rb +2 -2
- data/lib/warden/mixins/common.rb +1 -1
- data/lib/warden/proxy.rb +24 -5
- data/lib/warden/session_serializer.rb +1 -1
- data/lib/warden/strategies/base.rb +2 -1
- data/lib/warden/test/helpers.rb +2 -2
- data/lib/warden/test/mock.rb +5 -5
- data/lib/warden/test/warden_helpers.rb +1 -1
- data/lib/warden/version.rb +2 -2
- data/lib/warden.rb +1 -1
- data/warden.gemspec +18 -18
- metadata +18 -36
- data/README.textile +0 -9
- data/spec/helpers/request_helper.rb +0 -52
- data/spec/helpers/strategies/fail_with_user.rb +0 -11
- data/spec/helpers/strategies/failz.rb +0 -9
- data/spec/helpers/strategies/invalid.rb +0 -9
- data/spec/helpers/strategies/pass.rb +0 -9
- data/spec/helpers/strategies/pass_with_message.rb +0 -9
- data/spec/helpers/strategies/password.rb +0 -14
- data/spec/helpers/strategies/single.rb +0 -13
- data/spec/spec_helper.rb +0 -26
- data/spec/warden/authenticated_data_store_spec.rb +0 -115
- data/spec/warden/config_spec.rb +0 -49
- data/spec/warden/errors_spec.rb +0 -48
- data/spec/warden/hooks_spec.rb +0 -374
- data/spec/warden/manager_spec.rb +0 -341
- data/spec/warden/proxy_spec.rb +0 -1051
- data/spec/warden/scoped_session_serializer.rb +0 -124
- data/spec/warden/session_serializer_spec.rb +0 -54
- data/spec/warden/strategies/base_spec.rb +0 -314
- data/spec/warden/strategies_spec.rb +0 -95
- data/spec/warden/test/helpers_spec.rb +0 -94
- data/spec/warden/test/mock_spec.rb +0 -16
- data/spec/warden/test/test_mode_spec.rb +0 -76
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: b7e6c341f27479e6f36339e5d2c211277b4c0e664c960827c2044dd36b5c1c23
         | 
| 4 | 
            +
              data.tar.gz: 62e22ba4d81a887444d60ff033c7a6b0a0a8e723771d15cee045ee83baece801
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a6b602f560ebc6f04848c0c7e2d9017af8bf55c6cd6e6fec978e28e0463960761eaf488fabdba1b14d78bcf16e352a97d9b95b361142c3a4c14672517ca9e5b5
         | 
| 7 | 
            +
              data.tar.gz: 9a6397e9d84063c8f7cf221c878b0657151a0cf01a6f98172b2ca0dfd1d5e7eddf7da9ce616f550928f5f14dcb073553379add7a006acc875fb162a7ce2a8210
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # This workflow uses actions that are not certified by GitHub.
         | 
| 2 | 
            +
            # They are provided by a third-party and are governed by
         | 
| 3 | 
            +
            # separate terms of service, privacy policy, and support
         | 
| 4 | 
            +
            # documentation.
         | 
| 5 | 
            +
            # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
         | 
| 6 | 
            +
            # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            name: Tests
         | 
| 9 | 
            +
            on: [push, pull_request]
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            jobs:
         | 
| 12 | 
            +
              test:
         | 
| 13 | 
            +
                runs-on: ubuntu-latest
         | 
| 14 | 
            +
                strategy:
         | 
| 15 | 
            +
                  matrix:
         | 
| 16 | 
            +
                    ruby: [ '2.5', '2.6', '2.7' ]
         | 
| 17 | 
            +
                name: Ruby ${{ matrix.ruby }}
         | 
| 18 | 
            +
                steps:
         | 
| 19 | 
            +
                - uses: actions/checkout@v2
         | 
| 20 | 
            +
                - name: Set up Ruby
         | 
| 21 | 
            +
                  uses: ruby/setup-ruby@v1
         | 
| 22 | 
            +
                  with:
         | 
| 23 | 
            +
                    ruby-version: 2.6
         | 
| 24 | 
            +
                - name: Install dependencies
         | 
| 25 | 
            +
                  run: bundle install
         | 
| 26 | 
            +
                - name: Run tests
         | 
| 27 | 
            +
                  run: bundle exec rake
         | 
    
        data/.rspec
    ADDED
    
    
| @@ -1,80 +1,114 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            # CHANGELOG
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Version 1.2.9 / 2020-08-31
         | 
| 4 | 
            +
            * Avoid warning on uninitialized instance variable (#188)
         | 
| 5 | 
            +
            * Bump rack to 2.2.3 (#190)
         | 
| 6 | 
            +
            * Remove Gemfile.lock
         | 
| 7 | 
            +
            * Resolve outstanding TODO entries (#179)
         | 
| 8 | 
            +
            * A bunch of gem structure cleanup (thanks @olleolleolle)
         | 
| 9 | 
            +
            * Set winning strategy when :warden is thrown (#174)
         | 
| 10 | 
            +
            * Bump rack dependency to >= 2.0.9 due to CVEs
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ## Version 1.2.8 / 2018-11-15
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            * Bugfix: Flips two lines to allow scopes authenticating from another without stepping on each other's toes. (PR #144)
         | 
| 15 | 
            +
            * Update `rack` dependency to >= 2.0.6 due to security vulnerability
         | 
| 16 | 
            +
            * Internal: Add Rubocop Lint checking
         | 
| 17 | 
            +
            * Internal: Update RSpec to use `.rspec` file
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ## Version 1.2.7 / 2016-10-12
         | 
| 20 | 
            +
             | 
| 2 21 | 
             
            * Added 'frozen_string_literal' comment, bump ruby to 2.3
         | 
| 3 22 |  | 
| 4 | 
            -
             | 
| 23 | 
            +
            ## Version 1.2.6 / 2016-01-31
         | 
| 24 | 
            +
             | 
| 5 25 | 
             
            * Separate test helpers to encapsulate Warden object mocking inside it's own class
         | 
| 6 26 |  | 
| 7 | 
            -
             | 
| 27 | 
            +
            ## Version 1.2.5 / 2016-01-28
         | 
| 28 | 
            +
             | 
| 8 29 | 
             
            * Expands on the test helpers available to make it easier for testing gems
         | 
| 9 30 |  | 
| 10 | 
            -
             | 
| 31 | 
            +
            ## Version 1.2.3 / 2013-07-14
         | 
| 32 | 
            +
             | 
| 11 33 | 
             
            * Fix an issue with lazy loaded sessions
         | 
| 12 34 |  | 
| 13 | 
            -
             | 
| 35 | 
            +
            ## Version 1.2.2 / 2013-07-12
         | 
| 36 | 
            +
             | 
| 14 37 | 
             
            * Support nil session stores on logout
         | 
| 15 38 | 
             
            * Fix strategies blowing up with undefined method base
         | 
| 16 39 |  | 
| 17 | 
            -
             | 
| 40 | 
            +
            ## Version 1.2.1 / 2012-06-16
         | 
| 41 | 
            +
             | 
| 18 42 | 
             
            * Minor caching and speed improvements
         | 
| 19 43 | 
             
            * Add support to #lock in the proxy
         | 
| 20 44 | 
             
            * Add support to after_failed_fetch callback
         | 
| 21 45 |  | 
| 22 | 
            -
             | 
| 46 | 
            +
            ## Version 1.2.0 / 2012-05-08
         | 
| 47 | 
            +
             | 
| 23 48 | 
             
            * Deprecate warden_cookies since it was never functional
         | 
| 24 49 | 
             
            * Add support to serialize_from_session and serialize_into_session per scope
         | 
| 25 50 |  | 
| 26 | 
            -
             | 
| 51 | 
            +
            ## Version 1.1.1 / 2012-02-16
         | 
| 52 | 
            +
             | 
| 27 53 | 
             
            * Allow run_callbacks as an option to set_user and user
         | 
| 28 54 |  | 
| 29 | 
            -
             | 
| 55 | 
            +
            ## Version 1.1.0 / 2011-11-02
         | 
| 56 | 
            +
             | 
| 30 57 | 
             
            * Use the default scopes action when using a bare throw(:warden)
         | 
| 31 58 |  | 
| 32 | 
            -
             | 
| 59 | 
            +
            ## Version 1.0.6
         | 
| 60 | 
            +
             | 
| 33 61 | 
             
            * Remove gem files from the packaged gem
         | 
| 34 62 |  | 
| 35 | 
            -
             | 
| 63 | 
            +
            ## Version 1.0.3
         | 
| 64 | 
            +
             | 
| 36 65 | 
             
            * Do not renew session on user fetch
         | 
| 37 66 |  | 
| 38 | 
            -
             | 
| 67 | 
            +
            ## Version 1.0.2
         | 
| 68 | 
            +
             | 
| 39 69 | 
             
            * Added :intercept_401 to Warden::Config
         | 
| 40 70 |  | 
| 41 | 
            -
             | 
| 71 | 
            +
            ## Version 1.0.1
         | 
| 72 | 
            +
             | 
| 42 73 | 
             
            * Bug fix on strategies errors handler
         | 
| 43 74 |  | 
| 44 | 
            -
             | 
| 75 | 
            +
            ## Version 1.0.0
         | 
| 76 | 
            +
             | 
| 45 77 | 
             
            * Bump!
         | 
| 46 78 | 
             
            * Allow strategies to configure if user should be stored or not
         | 
| 47 79 | 
             
            * Force session id renewal when user is set
         | 
| 48 80 |  | 
| 49 | 
            -
             | 
| 81 | 
            +
            ## Version 0.10.7
         | 
| 82 | 
            +
             | 
| 50 83 | 
             
            * Performance boost. config object to use raw accessors
         | 
| 51 84 | 
             
            * Add per strategy storage option
         | 
| 52 85 |  | 
| 53 | 
            -
             | 
| 86 | 
            +
            ## Version 0.10.6 / 0.10.7 / 2010-05-22
         | 
| 87 | 
            +
             | 
| 54 88 | 
             
            * Bugfix set_user was not respecting logouts in hooks
         | 
| 55 89 |  | 
| 56 | 
            -
             | 
| 90 | 
            +
            ## Version 0.10.4 / 0.10.5 / 2010-05-20
         | 
| 57 91 | 
             
            * Add action specifying in scope_defaults
         | 
| 58 92 |  | 
| 59 | 
            -
             | 
| 93 | 
            +
            ## Version 0.10.3 / 2010-03-01
         | 
| 60 94 | 
             
            * Bugfix prevent halted winning strategy from being skipped in subsequent runs
         | 
| 61 95 |  | 
| 62 | 
            -
             | 
| 96 | 
            +
            ## Version 0.10.2 / 2010-03-26
         | 
| 63 97 | 
             
            * Halt on fail!.  Add fail to allow cascading
         | 
| 64 98 | 
             
            * cache the winning strategy
         | 
| 65 99 | 
             
            * Make the config object Dupable
         | 
| 66 100 |  | 
| 67 | 
            -
             | 
| 101 | 
            +
            ## Version 0.10.1 / 2010-03-23
         | 
| 68 102 | 
             
            * Merge previous from master
         | 
| 69 103 | 
             
            * tag
         | 
| 70 104 |  | 
| 71 | 
            -
             | 
| 105 | 
            +
            ## Version 0.10.0 / 2010-03-22
         | 
| 72 106 | 
             
            * Allow default strategies to be set on the proxy
         | 
| 73 107 | 
             
            * Provide each scope with it's own default strategies
         | 
| 74 108 | 
             
            * Provide each scope with default set_user opts
         | 
| 75 109 | 
             
            * depricate the Proxy#default_strategies= method
         | 
| 76 110 |  | 
| 77 | 
            -
             | 
| 111 | 
            +
            ## Version 0.9.5 / 2010-02-28
         | 
| 78 112 |  | 
| 79 113 | 
             
            * Add Warden.test_mode!
         | 
| 80 114 | 
             
            * Add Warden.on_next_request
         | 
| @@ -82,42 +116,42 @@ | |
| 82 116 | 
             
            ** login_as
         | 
| 83 117 | 
             
            ** logout
         | 
| 84 118 |  | 
| 85 | 
            -
             | 
| 119 | 
            +
            ## Version 0.9.4 / 2010-02-23
         | 
| 86 120 |  | 
| 87 121 | 
             
            * Fix an issue where winning_strategy was not cleaned, allowing multiple scopes to sign in, even when the second one should not
         | 
| 88 122 |  | 
| 89 | 
            -
             | 
| 123 | 
            +
            ## Version 0.9.3 / 2010-02-17
         | 
| 90 124 |  | 
| 91 125 | 
             
            * Add prepend_ to all hooks (josevalim)
         | 
| 92 126 |  | 
| 93 | 
            -
             | 
| 127 | 
            +
            ## Version 0.9.2 / 2010-02-10
         | 
| 94 128 |  | 
| 95 129 | 
             
            * Ruby 1.9 compatibility changes (grimen)
         | 
| 96 130 |  | 
| 97 | 
            -
             | 
| 131 | 
            +
            ## Version 0.9.1 / 2010-02-09
         | 
| 98 132 |  | 
| 99 133 | 
             
            * Support for passing a custom message with Warden::Strategy::Base#success! as second optional (grimen)
         | 
| 100 134 |  | 
| 101 | 
            -
             | 
| 135 | 
            +
            ## Version 0.9.0 / 2010-01-21
         | 
| 102 136 |  | 
| 103 137 | 
             
            * Remove serializers and make strategies more powerful, including cache behavior (josevalim)
         | 
| 104 138 |  | 
| 105 | 
            -
             | 
| 139 | 
            +
            ## Version 0.8.1 / 2010-01-06
         | 
| 106 140 |  | 
| 107 141 | 
             
            * Fix a bug when silence missing serializers is set (josevalim)
         | 
| 108 142 |  | 
| 109 | 
            -
             | 
| 143 | 
            +
            ## Version 0.8.0 / 2010-01-06
         | 
| 110 144 |  | 
| 111 145 | 
             
            * enhancements
         | 
| 112 146 | 
             
              * Add conditionals to callbacks (josevalim)
         | 
| 113 147 | 
             
              * Extract Warden::Config from Warden::Manager (josevalim)
         | 
| 114 148 |  | 
| 115 | 
            -
             | 
| 149 | 
            +
            ## Version 0.7.0 / 2010-01-04
         | 
| 116 150 |  | 
| 117 151 | 
             
            * enhancements
         | 
| 118 152 | 
             
              * Expose config in warden proxy (hassox)
         | 
| 119 153 |  | 
| 120 | 
            -
             | 
| 154 | 
            +
            ## Version 0.6.0 / 2009-11-16
         | 
| 121 155 |  | 
| 122 156 | 
             
            * enhancements
         | 
| 123 157 | 
             
              * added serializers, including session serializer (set by default) and a cookie serializer (josevalim)
         | 
| @@ -125,24 +159,27 @@ | |
| 125 159 | 
             
            * deprecation
         | 
| 126 160 | 
             
              * serializer_into_session and serializer_from_session are deprecated, overwrite serialize and deserializer in Warden::Serializers::Session instead (josevalim)
         | 
| 127 161 |  | 
| 128 | 
            -
             | 
| 162 | 
            +
            ## Version 0.5.3 / 2009-11-10
         | 
| 163 | 
            +
             | 
| 129 164 | 
             
            * bug fixes
         | 
| 130 165 | 
             
              * authenticated? and unauthenticated? should return true or false, not the user or false. (hassox)
         | 
| 131 166 |  | 
| 132 | 
            -
             | 
| 167 | 
            +
            ## Version 0.5.2 / 2009-11-09
         | 
| 168 | 
            +
             | 
| 133 169 | 
             
            * enhancements
         | 
| 134 170 | 
             
              * authenticated? always try to serialize the user from session (josevalim)
         | 
| 135 171 | 
             
              * stored_in_session? checks if user information is stored in session, without serializing (josevalim)
         | 
| 136 172 | 
             
              * 401 behaves exactly like throw :warden (staugaard)
         | 
| 137 173 |  | 
| 138 | 
            -
             | 
| 174 | 
            +
            ## Version 0.5.1 / 2009-10-25
         | 
| 175 | 
            +
             | 
| 139 176 | 
             
            * enhancements
         | 
| 140 | 
            -
              * Adds  | 
| 177 | 
            +
              * Adds yielding to authenticated? and unauthenticated? methods (hassox)
         | 
| 141 178 | 
             
              * Adds an option to silence missing strategies (josevalim)
         | 
| 142 179 | 
             
              * Add an option to authenticate(!) to prevent storage of a user into the session (hassox)
         | 
| 143 180 | 
             
              * allow custom :action to be thrown (josevalim)
         | 
| 144 181 |  | 
| 145 | 
            -
             | 
| 182 | 
            +
            ## Version 0.4.0 / 2009-10-12
         | 
| 146 183 |  | 
| 147 184 | 
             
            * enhancements
         | 
| 148 185 | 
             
              * add Content-Type header to redirects (staugaard)
         | 
| @@ -151,9 +188,7 @@ | |
| 151 188 | 
             
            * bug fixes
         | 
| 152 189 | 
             
              * Do not consume opts twice, otherwise just the first will parse the scope (josevalim)
         | 
| 153 190 |  | 
| 154 | 
            -
             | 
| 191 | 
            +
            ## Version 0.3.2 / 2009-09-15
         | 
| 155 192 |  | 
| 156 193 | 
             
            * enhancements
         | 
| 157 194 | 
             
              * add a hook for plugins to specify how they can clear the whole section
         | 
| 158 | 
            -
             | 
| 159 | 
            -
             | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/LICENSE
    CHANGED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # Warden
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Getting Started
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Please see the [Warden Wiki](https://github.com/wardencommunity/warden/wiki) for overview documentation.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Maintainers
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Daniel Neighman (hassox)
         | 
| 10 | 
            +
            * José Valim (josevalim)
         | 
| 11 | 
            +
            * Justin Smestad (jsmestad)
         | 
| 12 | 
            +
            * Whitney Smestad (whithub)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            [A list of all contributors is available on Github.](https://github.com/hassox/warden/contributors)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ## LICENSE
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            See `LICENSE` file.
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,13 +1,8 @@ | |
| 1 1 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            $:.unshift  File.join(File.dirname(__FILE__), "lib")
         | 
| 3 | 
            +
            require "bundler/gem_tasks"
         | 
| 4 | 
            +
            require "rspec/core/rake_task"
         | 
| 6 5 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
            require 'rspec/core/rake_task'
         | 
| 6 | 
            +
            RSpec::Core::RakeTask.new(:spec)
         | 
| 9 7 |  | 
| 10 8 | 
             
            task :default => :spec
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            desc "Run all specs in spec directory"
         | 
| 13 | 
            -
            RSpec::Core::RakeTask.new(:spec)
         | 
    
        data/lib/warden/config.rb
    CHANGED
    
    
    
        data/lib/warden/errors.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 | 
             
            module Warden
         | 
| 4 4 | 
             
              class Proxy
         | 
| 5 5 | 
             
                # Lifted from DataMapper's dm-validations plugin :)
         | 
| @@ -39,7 +39,7 @@ module Warden | |
| 39 39 | 
             
                  end
         | 
| 40 40 |  | 
| 41 41 | 
             
                  def each
         | 
| 42 | 
            -
                    errors.map.each do | | 
| 42 | 
            +
                    errors.map.each do |_k,v|
         | 
| 43 43 | 
             
                      next if blank?(v)
         | 
| 44 44 | 
             
                      yield(v)
         | 
| 45 45 | 
             
                    end
         | 
    
        data/lib/warden/hooks.rb
    CHANGED
    
    
    
        data/lib/warden/manager.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 | 
             
            require 'warden/hooks'
         | 
| 4 4 | 
             
            require 'warden/config'
         | 
| 5 5 |  | 
| @@ -22,7 +22,6 @@ module Warden | |
| 22 22 | 
             
                  @app, @config = app, Warden::Config.new(options)
         | 
| 23 23 | 
             
                  @config.default_strategies(*default_strategies) if default_strategies
         | 
| 24 24 | 
             
                  yield @config if block_given?
         | 
| 25 | 
            -
                  self
         | 
| 26 25 | 
             
                end
         | 
| 27 26 |  | 
| 28 27 | 
             
                # Invoke the application guarding for throw :warden.
         | 
| @@ -33,6 +32,7 @@ module Warden | |
| 33 32 |  | 
| 34 33 | 
             
                  env['warden'] = Proxy.new(env, self)
         | 
| 35 34 | 
             
                  result = catch(:warden) do
         | 
| 35 | 
            +
                    env['warden'].on_request
         | 
| 36 36 | 
             
                    @app.call(env)
         | 
| 37 37 | 
             
                  end
         | 
| 38 38 |  | 
    
        data/lib/warden/mixins/common.rb
    CHANGED
    
    
    
        data/lib/warden/proxy.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Warden
         | 
| 5 5 | 
             
              class UserNotSet < RuntimeError; end
         | 
| @@ -29,6 +29,11 @@ module Warden | |
| 29 29 | 
             
                  @env, @users, @winning_strategies, @locked = env, {}, {}, false
         | 
| 30 30 | 
             
                  @manager, @config = manager, manager.config.dup
         | 
| 31 31 | 
             
                  @strategies = Hash.new { |h,k| h[k] = {} }
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                # Run the on_request callbacks
         | 
| 35 | 
            +
                # :api: private
         | 
| 36 | 
            +
                def on_request
         | 
| 32 37 | 
             
                  manager._run_callbacks(:on_request, self)
         | 
| 33 38 | 
             
                end
         | 
| 34 39 |  | 
| @@ -106,7 +111,7 @@ module Warden | |
| 106 111 | 
             
                  user
         | 
| 107 112 | 
             
                end
         | 
| 108 113 |  | 
| 109 | 
            -
                # Same API as  | 
| 114 | 
            +
                # Same API as authenticate, but returns a boolean instead of a user.
         | 
| 110 115 | 
             
                # The difference between this method (authenticate?) and authenticated?
         | 
| 111 116 | 
             
                # is that the former will run strategies if the user has not yet been
         | 
| 112 117 | 
             
                # authenticated, and the second relies on already performed ones.
         | 
| @@ -172,7 +177,13 @@ module Warden | |
| 172 177 |  | 
| 173 178 | 
             
                  if opts[:store] != false && opts[:event] != :fetch
         | 
| 174 179 | 
             
                    options = env[ENV_SESSION_OPTIONS]
         | 
| 175 | 
            -
                     | 
| 180 | 
            +
                    if options
         | 
| 181 | 
            +
                      if options.frozen?
         | 
| 182 | 
            +
                        env[ENV_SESSION_OPTIONS] = options.merge(:renew => true).freeze
         | 
| 183 | 
            +
                      else
         | 
| 184 | 
            +
                        options[:renew] = true
         | 
| 185 | 
            +
                      end
         | 
| 186 | 
            +
                    end
         | 
| 176 187 | 
             
                    session_serializer.store(user, scope)
         | 
| 177 188 | 
             
                  end
         | 
| 178 189 |  | 
| @@ -319,7 +330,7 @@ module Warden | |
| 319 330 | 
             
                  user = nil
         | 
| 320 331 |  | 
| 321 332 | 
             
                  # Look for an existing user in the session for this scope.
         | 
| 322 | 
            -
                  # If there was no user in the session | 
| 333 | 
            +
                  # If there was no user in the session, see if we can get one from the request.
         | 
| 323 334 | 
             
                  return user, opts if user = user(opts.merge(:scope => scope))
         | 
| 324 335 | 
             
                  _run_strategies_for(scope, args)
         | 
| 325 336 |  | 
| @@ -354,9 +365,12 @@ module Warden | |
| 354 365 | 
             
                  (strategies || args).each do |name|
         | 
| 355 366 | 
             
                    strategy = _fetch_strategy(name, scope)
         | 
| 356 367 | 
             
                    next unless strategy && !strategy.performed? && strategy.valid?
         | 
| 368 | 
            +
                    catch(:warden) do
         | 
| 369 | 
            +
                      _update_winning_strategy(strategy, scope)
         | 
| 370 | 
            +
                    end
         | 
| 357 371 |  | 
| 358 | 
            -
                    self.winning_strategy = @winning_strategies[scope] = strategy
         | 
| 359 372 | 
             
                    strategy._run!
         | 
| 373 | 
            +
                    _update_winning_strategy(strategy, scope)
         | 
| 360 374 | 
             
                    break if strategy.halted?
         | 
| 361 375 | 
             
                  end
         | 
| 362 376 | 
             
                end
         | 
| @@ -371,6 +385,11 @@ module Warden | |
| 371 385 | 
             
                    raise "Invalid strategy #{name}"
         | 
| 372 386 | 
             
                  end
         | 
| 373 387 | 
             
                end
         | 
| 388 | 
            +
             | 
| 389 | 
            +
                # Updates the winning strategy for a given scope
         | 
| 390 | 
            +
                def _update_winning_strategy(strategy, scope)
         | 
| 391 | 
            +
                  self.winning_strategy = @winning_strategies[scope] = strategy
         | 
| 392 | 
            +
                end
         | 
| 374 393 | 
             
              end # Proxy
         | 
| 375 394 |  | 
| 376 395 | 
             
            end # Warden
         | 
| @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 | 
             
            module Warden
         | 
| 4 4 | 
             
              module Strategies
         | 
| 5 5 | 
             
                # A strategy is a place where you can put logic related to authentication. Any strategy inherits
         | 
| @@ -45,6 +45,7 @@ module Warden | |
| 45 45 | 
             
                    @env, @scope = env, scope
         | 
| 46 46 | 
             
                    @status, @headers = nil, {}
         | 
| 47 47 | 
             
                    @halted, @performed = false, false
         | 
| 48 | 
            +
                    @result = nil
         | 
| 48 49 | 
             
                  end
         | 
| 49 50 |  | 
| 50 51 | 
             
                  # The method that is called from above. This method calls the underlying authenticate! method
         | 
    
        data/lib/warden/test/helpers.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Warden
         | 
| 5 5 | 
             
              module Test
         | 
| @@ -7,7 +7,7 @@ module Warden | |
| 7 7 | 
             
                # These provide the ability to login and logout on any given request
         | 
| 8 8 | 
             
                # Note: During the teardown phase of your specs you should include: Warden.test_reset!
         | 
| 9 9 | 
             
                module Helpers
         | 
| 10 | 
            -
                  def self.included( | 
| 10 | 
            +
                  def self.included(_base)
         | 
| 11 11 | 
             
                    ::Warden.test_mode!
         | 
| 12 12 | 
             
                  end
         | 
| 13 13 |  | 
    
        data/lib/warden/test/mock.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 4 | 
             
            require 'rack'
         | 
| 5 5 |  | 
| @@ -8,7 +8,7 @@ module Warden | |
| 8 8 | 
             
                # A mock of an application to get a Warden object to test on
         | 
| 9 9 | 
             
                # Note: During the teardown phase of your specs you should include: Warden.test_reset!
         | 
| 10 10 | 
             
                module Mock
         | 
| 11 | 
            -
                  def self.included( | 
| 11 | 
            +
                  def self.included(_base)
         | 
| 12 12 | 
             
                    ::Warden.test_mode!
         | 
| 13 13 | 
             
                  end
         | 
| 14 14 |  | 
| @@ -37,7 +37,7 @@ module Warden | |
| 37 37 | 
             
                  def app
         | 
| 38 38 | 
             
                    @app ||= begin
         | 
| 39 39 | 
             
                      opts = {
         | 
| 40 | 
            -
                        failure_app: lambda {
         | 
| 40 | 
            +
                        failure_app: lambda { |_e|
         | 
| 41 41 | 
             
                          [401, { 'Content-Type' => 'text/plain' }, ['You Fail!']]
         | 
| 42 42 | 
             
                        },
         | 
| 43 43 | 
             
                        default_strategies: :password,
         | 
| @@ -46,7 +46,7 @@ module Warden | |
| 46 46 | 
             
                      Rack::Builder.new do
         | 
| 47 47 | 
             
                        use Warden::Test::Mock::Session
         | 
| 48 48 | 
             
                        use Warden::Manager, opts, &proc {}
         | 
| 49 | 
            -
                        run lambda { | | 
| 49 | 
            +
                        run lambda { |_e|
         | 
| 50 50 | 
             
                          [200, { 'Content-Type' => 'text/plain' }, ['You Win']]
         | 
| 51 51 | 
             
                        }
         | 
| 52 52 | 
             
                      end
         | 
| @@ -55,7 +55,7 @@ module Warden | |
| 55 55 |  | 
| 56 56 | 
             
                  class Session
         | 
| 57 57 | 
             
                    attr_accessor :app
         | 
| 58 | 
            -
                    def initialize(app, | 
| 58 | 
            +
                    def initialize(app, _configs={})
         | 
| 59 59 | 
             
                      @app = app
         | 
| 60 60 | 
             
                    end
         | 
| 61 61 |  | 
    
        data/lib/warden/version.rb
    CHANGED
    
    
    
        data/lib/warden.rb
    CHANGED
    
    
    
        data/warden.gemspec
    CHANGED
    
    | @@ -1,25 +1,25 @@ | |
| 1 1 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 4 | 
            +
            lib = File.expand_path("../lib", __FILE__)
         | 
| 5 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 6 | 
            +
            require 'warden/version'
         | 
| 5 7 |  | 
| 6 | 
            -
            Gem::Specification.new do | | 
| 7 | 
            -
               | 
| 8 | 
            -
               | 
| 9 | 
            -
               | 
| 10 | 
            -
               | 
| 11 | 
            -
               | 
| 12 | 
            -
               | 
| 8 | 
            +
            Gem::Specification.new do |spec|
         | 
| 9 | 
            +
              spec.name = "warden"
         | 
| 10 | 
            +
              spec.version = Warden::VERSION
         | 
| 11 | 
            +
              spec.authors = ["Daniel Neighman", "Justin Smestad", "Whitney Smestad", "José Valim"]
         | 
| 12 | 
            +
              spec.email = %q{hasox.sox@gmail.com justin.smestad@gmail.com whitcolorado@gmail.com}
         | 
| 13 | 
            +
              spec.homepage = "https://github.com/hassox/warden"
         | 
| 14 | 
            +
              spec.summary = "An authentication library compatible with all Rack-based frameworks"
         | 
| 15 | 
            +
              spec.license = "MIT"
         | 
| 16 | 
            +
              spec.extra_rdoc_files = [
         | 
| 13 17 | 
             
                "LICENSE",
         | 
| 14 | 
            -
             | 
| 18 | 
            +
                "README.md"
         | 
| 15 19 | 
             
              ]
         | 
| 16 | 
            -
               | 
| 17 | 
            -
             | 
| 18 | 
            -
               | 
| 19 | 
            -
               | 
| 20 | 
            -
               | 
| 21 | 
            -
              s.rubygems_version = %q{1.3.7}
         | 
| 22 | 
            -
              s.summary = %q{Rack middleware that provides authentication for rack applications}
         | 
| 23 | 
            -
              s.add_dependency "rack", ">= 1.0"
         | 
| 20 | 
            +
              spec.files = `git ls-files -z`.split("\x0").reject do |f|
         | 
| 21 | 
            +
                f.match(%r{^(test|spec|features)/})
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
              spec.require_paths = ["lib"]
         | 
| 24 | 
            +
              spec.add_dependency "rack", ">= 2.0.9"
         | 
| 24 25 | 
             
            end
         | 
| 25 | 
            -
             |