authlogic 3.8.0 → 4.0.0

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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/.github/triage.md +87 -0
  3. data/.gitignore +2 -1
  4. data/.rubocop.yml +62 -6
  5. data/.rubocop_todo.yml +51 -267
  6. data/.travis.yml +4 -26
  7. data/CHANGELOG.md +226 -2
  8. data/CONTRIBUTING.md +15 -5
  9. data/Gemfile +2 -2
  10. data/README.md +183 -91
  11. data/Rakefile +1 -1
  12. data/UPGRADING.md +20 -0
  13. data/authlogic.gemspec +25 -16
  14. data/lib/authlogic.rb +45 -45
  15. data/lib/authlogic/acts_as_authentic/base.rb +18 -11
  16. data/lib/authlogic/acts_as_authentic/email.rb +32 -28
  17. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +1 -1
  18. data/lib/authlogic/acts_as_authentic/login.rb +32 -42
  19. data/lib/authlogic/acts_as_authentic/magic_columns.rb +6 -6
  20. data/lib/authlogic/acts_as_authentic/password.rb +53 -31
  21. data/lib/authlogic/acts_as_authentic/perishable_token.rb +18 -17
  22. data/lib/authlogic/acts_as_authentic/persistence_token.rb +7 -12
  23. data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +64 -0
  24. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +11 -3
  25. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +30 -10
  26. data/lib/authlogic/acts_as_authentic/single_access_token.rb +4 -4
  27. data/lib/authlogic/authenticates_many/association.rb +3 -3
  28. data/lib/authlogic/authenticates_many/base.rb +2 -2
  29. data/lib/authlogic/config.rb +0 -1
  30. data/lib/authlogic/controller_adapters/abstract_adapter.rb +11 -4
  31. data/lib/authlogic/controller_adapters/rack_adapter.rb +7 -3
  32. data/lib/authlogic/controller_adapters/rails_adapter.rb +2 -0
  33. data/lib/authlogic/crypto_providers/aes256.rb +1 -1
  34. data/lib/authlogic/crypto_providers/bcrypt.rb +1 -1
  35. data/lib/authlogic/crypto_providers/scrypt.rb +6 -6
  36. data/lib/authlogic/crypto_providers/sha1.rb +10 -5
  37. data/lib/authlogic/crypto_providers/sha256.rb +11 -8
  38. data/lib/authlogic/crypto_providers/wordpress.rb +2 -2
  39. data/lib/authlogic/i18n.rb +4 -2
  40. data/lib/authlogic/random.rb +10 -28
  41. data/lib/authlogic/regex.rb +11 -8
  42. data/lib/authlogic/session/activation.rb +6 -3
  43. data/lib/authlogic/session/active_record_trickery.rb +13 -9
  44. data/lib/authlogic/session/base.rb +15 -4
  45. data/lib/authlogic/session/brute_force_protection.rb +14 -7
  46. data/lib/authlogic/session/callbacks.rb +53 -30
  47. data/lib/authlogic/session/cookies.rb +57 -16
  48. data/lib/authlogic/session/existence.rb +21 -11
  49. data/lib/authlogic/session/foundation.rb +56 -10
  50. data/lib/authlogic/session/http_auth.rb +15 -8
  51. data/lib/authlogic/session/klass.rb +7 -5
  52. data/lib/authlogic/session/magic_columns.rb +24 -11
  53. data/lib/authlogic/session/magic_states.rb +11 -4
  54. data/lib/authlogic/session/params.rb +6 -2
  55. data/lib/authlogic/session/password.rb +46 -73
  56. data/lib/authlogic/session/persistence.rb +11 -7
  57. data/lib/authlogic/session/priority_record.rb +7 -4
  58. data/lib/authlogic/session/scopes.rb +15 -6
  59. data/lib/authlogic/session/session.rb +20 -10
  60. data/lib/authlogic/session/timeout.rb +2 -2
  61. data/lib/authlogic/session/unauthorized_record.rb +1 -1
  62. data/lib/authlogic/session/validation.rb +1 -1
  63. data/lib/authlogic/test_case.rb +65 -2
  64. data/lib/authlogic/test_case/mock_controller.rb +5 -4
  65. data/lib/authlogic/test_case/mock_cookie_jar.rb +11 -2
  66. data/lib/authlogic/test_case/mock_request.rb +5 -1
  67. data/lib/authlogic/test_case/rails_request_adapter.rb +3 -2
  68. data/lib/authlogic/version.rb +16 -0
  69. data/test/acts_as_authentic_test/email_test.rb +33 -34
  70. data/test/acts_as_authentic_test/logged_in_status_test.rb +1 -1
  71. data/test/acts_as_authentic_test/login_test.rb +73 -78
  72. data/test/acts_as_authentic_test/password_test.rb +30 -18
  73. data/test/acts_as_authentic_test/perishable_token_test.rb +9 -3
  74. data/test/acts_as_authentic_test/persistence_token_test.rb +4 -0
  75. data/test/acts_as_authentic_test/session_maintenance_test.rb +66 -14
  76. data/test/adapter_test.rb +21 -0
  77. data/test/gemfiles/Gemfile.rails-4.2.x +2 -2
  78. data/test/gemfiles/Gemfile.rails-5.0.x +2 -2
  79. data/test/gemfiles/Gemfile.rails-master +6 -0
  80. data/test/i18n_test.rb +1 -1
  81. data/test/libs/company.rb +2 -2
  82. data/test/random_test.rb +7 -37
  83. data/test/session_test/active_record_trickery_test.rb +4 -3
  84. data/test/session_test/brute_force_protection_test.rb +8 -8
  85. data/test/session_test/callbacks_test.rb +1 -1
  86. data/test/session_test/cookies_test.rb +27 -4
  87. data/test/session_test/existence_test.rb +15 -4
  88. data/test/session_test/foundation_test.rb +16 -0
  89. data/test/session_test/http_auth_test.rb +3 -1
  90. data/test/session_test/magic_columns_test.rb +10 -12
  91. data/test/session_test/params_test.rb +4 -1
  92. data/test/session_test/password_test.rb +7 -7
  93. data/test/session_test/persistence_test.rb +1 -0
  94. data/test/session_test/scopes_test.rb +7 -7
  95. data/test/session_test/session_test.rb +2 -2
  96. data/test/session_test/timeout_test.rb +1 -1
  97. data/test/session_test/unauthorized_record_test.rb +1 -1
  98. data/test/test_helper.rb +111 -103
  99. metadata +68 -64
  100. data/test/gemfiles/Gemfile.rails-3.2.x +0 -7
  101. data/test/gemfiles/Gemfile.rails-4.0.x +0 -7
  102. data/test/gemfiles/Gemfile.rails-4.1.x +0 -7
@@ -5,6 +5,7 @@ module SessionTest
5
5
  def test_find
6
6
  aaron = users(:aaron)
7
7
  refute UserSession.find
8
+ UserSession.allow_http_basic_auth = true
8
9
  http_basic_auth_for(aaron) { assert UserSession.find }
9
10
  set_cookie_for(aaron)
10
11
  assert UserSession.find
@@ -6,7 +6,7 @@ module SessionTest
6
6
  assert_nil Authlogic::Session::Base.scope
7
7
 
8
8
  thread1 = Thread.new do
9
- scope = { :id => :scope1 }
9
+ scope = { id: :scope1 }
10
10
  Authlogic::Session::Base.send(:scope=, scope)
11
11
  assert_equal scope, Authlogic::Session::Base.scope
12
12
  end
@@ -15,7 +15,7 @@ module SessionTest
15
15
  assert_nil Authlogic::Session::Base.scope
16
16
 
17
17
  thread2 = Thread.new do
18
- scope = { :id => :scope2 }
18
+ scope = { id: :scope2 }
19
19
  Authlogic::Session::Base.send(:scope=, scope)
20
20
  assert_equal scope, Authlogic::Session::Base.scope
21
21
  end
@@ -27,17 +27,17 @@ module SessionTest
27
27
  def test_with_scope_method
28
28
  assert_raise(ArgumentError) { UserSession.with_scope }
29
29
 
30
- UserSession.with_scope(:find_options => { :conditions => "awesome = 1" }, :id => "some_id") do
31
- assert_equal({ :find_options => { :conditions => "awesome = 1" }, :id => "some_id" }, UserSession.scope)
30
+ UserSession.with_scope(find_options: { conditions: "awesome = 1" }, id: "some_id") do
31
+ assert_equal({ find_options: { conditions: "awesome = 1" }, id: "some_id" }, UserSession.scope)
32
32
  end
33
33
 
34
34
  assert_nil UserSession.scope
35
35
  end
36
36
 
37
37
  def test_initialize
38
- UserSession.with_scope(:find_options => { :conditions => "awesome = 1" }, :id => "some_id") do
38
+ UserSession.with_scope(find_options: { conditions: "awesome = 1" }, id: "some_id") do
39
39
  session = UserSession.new
40
- assert_equal({ :find_options => { :conditions => "awesome = 1" }, :id => "some_id" }, session.scope)
40
+ assert_equal({ find_options: { conditions: "awesome = 1" }, id: "some_id" }, session.scope)
41
41
  session.id = :another_id
42
42
  assert_equal "another_id_some_id_test", session.send(:build_key, "test")
43
43
  end
@@ -51,7 +51,7 @@ module SessionTest
51
51
  session = UserSession.new
52
52
  assert_equal zack, session.send(:search_for_record, "find_by_login", zack.login)
53
53
 
54
- session.scope = { :find_options => { :conditions => ["company_id = ?", binary_logic.id] } }
54
+ session.scope = { find_options: { conditions: ["company_id = ?", binary_logic.id] } }
55
55
  assert_nil session.send(:search_for_record, "find_by_login", zack.login)
56
56
 
57
57
  assert_equal ben, session.send(:search_for_record, "find_by_login", ben.login)
@@ -25,14 +25,14 @@ module SessionTest
25
25
  ben = users(:ben)
26
26
  controller.session["user_credentials"] = 'neo'
27
27
  controller.session["user_credentials_id"] = {
28
- :select => " *,'neo' AS persistence_token FROM users WHERE id = #{ben.id} limit 1 -- "
28
+ select: " *,'neo' AS persistence_token FROM users WHERE id = #{ben.id} limit 1 -- "
29
29
  }
30
30
  @user_session = UserSession.find
31
31
  assert @user_session.blank?
32
32
  end
33
33
 
34
34
  def test_persist_persist_by_session_with_sql_injection_attack
35
- controller.session["user_credentials"] = { :select => "ABRA CADABRA" }
35
+ controller.session["user_credentials"] = { select: "ABRA CADABRA" }
36
36
  controller.session["user_credentials_id"] = nil
37
37
  assert_nothing_raised do
38
38
  @user_session = UserSession.find
@@ -70,7 +70,7 @@ module SessionTest
70
70
  def test_successful_login
71
71
  UserSession.logout_on_timeout = true
72
72
  ben = users(:ben)
73
- session = UserSession.create(:login => ben.login, :password => "benrocks")
73
+ session = UserSession.create(login: ben.login, password: "benrocks")
74
74
  refute session.new_session?
75
75
  session = UserSession.find
76
76
  assert session
@@ -7,7 +7,7 @@ module SessionTest
7
7
  session = UserSession.new
8
8
  session.credentials = [ben]
9
9
  assert_equal ben, session.unauthorized_record
10
- assert_equal({ :unauthorized_record => "<protected>" }, session.credentials)
10
+ assert_equal({ unauthorized_record: "<protected>" }, session.credentials)
11
11
  end
12
12
  end
13
13
  end
@@ -1,3 +1,4 @@
1
+ require "byebug"
1
2
  require "rubygems"
2
3
  require "minitest/autorun"
3
4
  require "active_record"
@@ -8,7 +9,7 @@ require "i18n"
8
9
  I18n.load_path << File.dirname(__FILE__) + '/i18n/lol.yml'
9
10
 
10
11
  # ActiveRecord::Schema.verbose = false
11
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
12
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
12
13
  logger = Logger.new(STDOUT)
13
14
  logger.level = Logger::FATAL
14
15
  ActiveRecord::Base.logger = logger
@@ -22,7 +23,7 @@ if ActiveSupport.respond_to?(:test_order)
22
23
  end
23
24
 
24
25
  ActiveRecord::Base.default_timezone = :local
25
- ActiveRecord::Schema.define(:version => 1) do
26
+ ActiveRecord::Schema.define(version: 1) do
26
27
  create_table :companies do |t|
27
28
  t.datetime :created_at
28
29
  t.datetime :updated_at
@@ -36,7 +37,7 @@ ActiveRecord::Schema.define(:version => 1) do
36
37
  t.string :name
37
38
  end
38
39
 
39
- create_table :projects_users, :id => false do |t|
40
+ create_table :projects_users, id: false do |t|
40
41
  t.integer :project_id
41
42
  t.integer :user_id
42
43
  end
@@ -44,7 +45,7 @@ ActiveRecord::Schema.define(:version => 1) do
44
45
  create_table :users do |t|
45
46
  t.datetime :created_at
46
47
  t.datetime :updated_at
47
- t.integer :lock_version, :default => 0
48
+ t.integer :lock_version, default: 0
48
49
  t.integer :company_id
49
50
  t.string :login
50
51
  t.string :crypted_password
@@ -55,16 +56,16 @@ ActiveRecord::Schema.define(:version => 1) do
55
56
  t.string :email
56
57
  t.string :first_name
57
58
  t.string :last_name
58
- t.integer :login_count, :default => 0, :null => false
59
- t.integer :failed_login_count, :default => 0, :null => false
59
+ t.integer :login_count, default: 0, null: false
60
+ t.integer :failed_login_count, default: 0, null: false
60
61
  t.datetime :last_request_at
61
62
  t.datetime :current_login_at
62
63
  t.datetime :last_login_at
63
64
  t.string :current_login_ip
64
65
  t.string :last_login_ip
65
- t.boolean :active, :default => true
66
- t.boolean :approved, :default => true
67
- t.boolean :confirmed, :default => true
66
+ t.boolean :active, default: true
67
+ t.boolean :approved, default: true
68
+ t.boolean :confirmed, default: true
68
69
  end
69
70
 
70
71
  create_table :employees do |t|
@@ -77,7 +78,7 @@ ActiveRecord::Schema.define(:version => 1) do
77
78
  t.string :persistence_token
78
79
  t.string :first_name
79
80
  t.string :last_name
80
- t.integer :login_count, :default => 0, :null => false
81
+ t.integer :login_count, default: 0, null: false
81
82
  t.datetime :last_request_at
82
83
  t.datetime :current_login_at
83
84
  t.datetime :last_login_at
@@ -103,7 +104,7 @@ ActiveRecord::Schema.define(:version => 1) do
103
104
  end
104
105
  end
105
106
 
106
- require_relative '../lib/authlogic' unless defined?(Authlogic)
107
+ require_relative '../lib/authlogic'
107
108
  require_relative '../lib/authlogic/test_case'
108
109
  require_relative 'libs/project'
109
110
  require_relative 'libs/affiliate'
@@ -120,114 +121,121 @@ require_relative 'libs/company'
120
121
  # thus openssl gem 2.0), it is more strict, and must be exactly 32 bytes.
121
122
  Authlogic::CryptoProviders::AES256.key = ::OpenSSL::Random.random_bytes(32)
122
123
 
123
- class ActiveSupport::TestCase
124
- include ActiveRecord::TestFixtures
125
- self.fixture_path = File.dirname(__FILE__) + "/fixtures"
126
-
127
- # use_transactional_fixtures= is deprecated and will be removed from Rails 5.1
128
- # (use use_transactional_tests= instead)
129
- if respond_to?(:use_transactional_tests=)
130
- self.use_transactional_tests = false
131
- else
132
- self.use_transactional_fixtures = false
133
- end
124
+ module ActiveSupport
125
+ class TestCase
126
+ include ActiveRecord::TestFixtures
127
+ self.fixture_path = File.dirname(__FILE__) + "/fixtures"
128
+
129
+ # use_transactional_fixtures= is deprecated and will be removed from Rails 5.1
130
+ # (use use_transactional_tests= instead)
131
+ if respond_to?(:use_transactional_tests=)
132
+ self.use_transactional_tests = false
133
+ else
134
+ self.use_transactional_fixtures = false
135
+ end
134
136
 
135
- self.use_instantiated_fixtures = false
136
- self.pre_loaded_fixtures = false
137
- fixtures :all
138
- setup :activate_authlogic
139
- setup :config_setup
140
- teardown :config_teardown
141
- teardown { Timecop.return } # for tests that need to freeze the time
142
-
143
- private
144
-
145
- # Many of the tests change Authlogic config for the test models. Some tests
146
- # were not resetting the config after tests, which didn't surface as broken
147
- # tests until Rails 4.1 was added for testing. This ensures that all the
148
- # models start tests with their original config.
149
- def config_setup
150
- [Project, Affiliate, Employee, EmployeeSession, Ldaper, User, UserSession, Company].each do |model|
151
- model.class_attribute :original_acts_as_authentic_config unless model.respond_to?(:original_acts_as_authentic_config)
152
- model.original_acts_as_authentic_config = model.acts_as_authentic_config
137
+ self.use_instantiated_fixtures = false
138
+ self.pre_loaded_fixtures = false
139
+ fixtures :all
140
+ setup :activate_authlogic
141
+ setup :config_setup
142
+ teardown :config_teardown
143
+ teardown { Timecop.return } # for tests that need to freeze the time
144
+
145
+ private
146
+
147
+ # Many of the tests change Authlogic config for the test models. Some tests
148
+ # were not resetting the config after tests, which didn't surface as broken
149
+ # tests until Rails 4.1 was added for testing. This ensures that all the
150
+ # models start tests with their original config.
151
+ def config_setup
152
+ [Project, Affiliate, Employee, EmployeeSession, Ldaper, User, UserSession, Company].each do |model|
153
+ unless model.respond_to?(:original_acts_as_authentic_config)
154
+ model.class_attribute :original_acts_as_authentic_config
155
+ end
156
+ model.original_acts_as_authentic_config = model.acts_as_authentic_config
157
+ end
153
158
  end
154
- end
155
159
 
156
- def config_teardown
157
- [Project, Affiliate, Employee, EmployeeSession, Ldaper, User, UserSession, Company].each do |model|
158
- model.acts_as_authentic_config = model.original_acts_as_authentic_config
160
+ def config_teardown
161
+ [Project, Affiliate, Employee, EmployeeSession, Ldaper, User, UserSession, Company].each do |model|
162
+ model.acts_as_authentic_config = model.original_acts_as_authentic_config
163
+ end
159
164
  end
160
- end
161
165
 
162
- def password_for(user)
163
- case user
164
- when users(:ben)
165
- "benrocks"
166
- when users(:zack)
167
- "zackrocks"
168
- when users(:aaron)
169
- "aaronrocks"
166
+ def password_for(user)
167
+ case user
168
+ when users(:ben)
169
+ "benrocks"
170
+ when users(:zack)
171
+ "zackrocks"
172
+ when users(:aaron)
173
+ "aaronrocks"
174
+ end
170
175
  end
171
- end
172
176
 
173
- def http_basic_auth_for(user = nil, &block)
174
- unless user.blank?
175
- controller.http_user = user.login
176
- controller.http_password = password_for(user)
177
+ def http_basic_auth_for(user = nil)
178
+ unless user.blank?
179
+ controller.http_user = user.login
180
+ controller.http_password = password_for(user)
181
+ end
182
+ yield
183
+ controller.http_user = controller.http_password = controller.realm = nil
177
184
  end
178
- yield
179
- controller.http_user = controller.http_password = controller.realm = nil
180
- end
181
185
 
182
- def set_cookie_for(user)
183
- controller.cookies["user_credentials"] = { :value => "#{user.persistence_token}::#{user.id}", :expires => nil }
184
- end
186
+ def set_cookie_for(user)
187
+ controller.cookies["user_credentials"] = {
188
+ value: "#{user.persistence_token}::#{user.id}",
189
+ expires: nil
190
+ }
191
+ end
185
192
 
186
- def unset_cookie
187
- controller.cookies["user_credentials"] = nil
188
- end
193
+ def unset_cookie
194
+ controller.cookies["user_credentials"] = nil
195
+ end
189
196
 
190
- def set_params_for(user)
191
- controller.params["user_credentials"] = user.single_access_token
192
- end
197
+ def set_params_for(user)
198
+ controller.params["user_credentials"] = user.single_access_token
199
+ end
193
200
 
194
- def unset_params
195
- controller.params["user_credentials"] = nil
196
- end
201
+ def unset_params
202
+ controller.params["user_credentials"] = nil
203
+ end
197
204
 
198
- def set_request_content_type(type)
199
- controller.request_content_type = type
200
- end
205
+ def set_request_content_type(type)
206
+ controller.request_content_type = type
207
+ end
201
208
 
202
- def unset_request_content_type
203
- controller.request_content_type = nil
204
- end
209
+ def unset_request_content_type
210
+ controller.request_content_type = nil
211
+ end
205
212
 
206
- def session_credentials_prefix(scope_record)
207
- if scope_record.nil?
208
- ""
209
- else
210
- format(
211
- "%s_%d_",
212
- scope_record.class.model_name.name.underscore,
213
- scope_record.id
214
- )
213
+ def session_credentials_prefix(scope_record)
214
+ if scope_record.nil?
215
+ ""
216
+ else
217
+ format(
218
+ "%s_%d_",
219
+ scope_record.class.model_name.name.underscore,
220
+ scope_record.id
221
+ )
222
+ end
215
223
  end
216
- end
217
224
 
218
- # Sets the session variables that `record` (eg. a `User`) would have after
219
- # logging in.
220
- #
221
- # If `record` belongs to an `authenticates_many` association that uses the
222
- # `scope_cookies` option, then a `scope_record` can be provided.
223
- def set_session_for(record, scope_record = nil)
224
- prefix = session_credentials_prefix(scope_record)
225
- record_class_name = record.class.model_name.name.underscore
226
- controller.session["#{prefix}#{record_class_name}_credentials"] = record.persistence_token
227
- controller.session["#{prefix}#{record_class_name}_credentials_id"] = record.id
228
- end
225
+ # Sets the session variables that `record` (eg. a `User`) would have after
226
+ # logging in.
227
+ #
228
+ # If `record` belongs to an `authenticates_many` association that uses the
229
+ # `scope_cookies` option, then a `scope_record` can be provided.
230
+ def set_session_for(record, scope_record = nil)
231
+ prefix = session_credentials_prefix(scope_record)
232
+ record_class_name = record.class.model_name.name.underscore
233
+ controller.session["#{prefix}#{record_class_name}_credentials"] = record.persistence_token
234
+ controller.session["#{prefix}#{record_class_name}_credentials_id"] = record.id
235
+ end
229
236
 
230
- def unset_session
231
- controller.session["user_credentials"] = controller.session["user_credentials_id"] = nil
232
- end
237
+ def unset_session
238
+ controller.session["user_credentials"] = controller.session["user_credentials_id"] = nil
239
+ end
240
+ end
233
241
  end
metadata CHANGED
@@ -1,164 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlogic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
5
- prerelease:
4
+ version: 4.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Johnson
8
+ - Tieg Zaharia
9
+ - Jared Beck
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2018-02-08 00:00:00.000000000 Z
13
+ date: 2018-03-18 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: activerecord
16
17
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '3.2'
22
- - - <
21
+ version: '4.2'
22
+ - - "<"
23
23
  - !ruby/object:Gem::Version
24
24
  version: '5.3'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
28
  requirements:
30
- - - ! '>='
29
+ - - ">="
31
30
  - !ruby/object:Gem::Version
32
- version: '3.2'
33
- - - <
31
+ version: '4.2'
32
+ - - "<"
34
33
  - !ruby/object:Gem::Version
35
34
  version: '5.3'
36
35
  - !ruby/object:Gem::Dependency
37
36
  name: activesupport
38
37
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
38
  requirements:
41
- - - ! '>='
39
+ - - ">="
42
40
  - !ruby/object:Gem::Version
43
- version: '3.2'
44
- - - <
41
+ version: '4.2'
42
+ - - "<"
45
43
  - !ruby/object:Gem::Version
46
44
  version: '5.3'
47
45
  type: :runtime
48
46
  prerelease: false
49
47
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
48
  requirements:
52
- - - ! '>='
49
+ - - ">="
53
50
  - !ruby/object:Gem::Version
54
- version: '3.2'
55
- - - <
51
+ version: '4.2'
52
+ - - "<"
56
53
  - !ruby/object:Gem::Version
57
54
  version: '5.3'
58
55
  - !ruby/object:Gem::Dependency
59
56
  name: request_store
60
57
  requirement: !ruby/object:Gem::Requirement
61
- none: false
62
58
  requirements:
63
- - - ~>
59
+ - - "~>"
64
60
  - !ruby/object:Gem::Version
65
61
  version: '1.0'
66
62
  type: :runtime
67
63
  prerelease: false
68
64
  version_requirements: !ruby/object:Gem::Requirement
69
- none: false
70
65
  requirements:
71
- - - ~>
66
+ - - "~>"
72
67
  - !ruby/object:Gem::Version
73
68
  version: '1.0'
74
69
  - !ruby/object:Gem::Dependency
75
70
  name: scrypt
76
71
  requirement: !ruby/object:Gem::Requirement
77
- none: false
78
72
  requirements:
79
- - - ! '>='
73
+ - - ">="
80
74
  - !ruby/object:Gem::Version
81
75
  version: '1.2'
82
- - - <
76
+ - - "<"
83
77
  - !ruby/object:Gem::Version
84
78
  version: '4.0'
85
79
  type: :runtime
86
80
  prerelease: false
87
81
  version_requirements: !ruby/object:Gem::Requirement
88
- none: false
89
82
  requirements:
90
- - - ! '>='
83
+ - - ">="
91
84
  - !ruby/object:Gem::Version
92
85
  version: '1.2'
93
- - - <
86
+ - - "<"
94
87
  - !ruby/object:Gem::Version
95
88
  version: '4.0'
96
89
  - !ruby/object:Gem::Dependency
97
90
  name: bcrypt
98
91
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
92
  requirements:
101
- - - ~>
93
+ - - "~>"
102
94
  - !ruby/object:Gem::Version
103
95
  version: '3.1'
104
96
  type: :development
105
97
  prerelease: false
106
98
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
99
  requirements:
109
- - - ~>
100
+ - - "~>"
110
101
  - !ruby/object:Gem::Version
111
102
  version: '3.1'
112
103
  - !ruby/object:Gem::Dependency
113
- name: timecop
104
+ name: byebug
114
105
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
106
  requirements:
117
- - - ~>
107
+ - - "~>"
118
108
  - !ruby/object:Gem::Version
119
- version: '0.7'
109
+ version: '10.0'
120
110
  type: :development
121
111
  prerelease: false
122
112
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
113
  requirements:
125
- - - ~>
114
+ - - "~>"
126
115
  - !ruby/object:Gem::Version
127
- version: '0.7'
116
+ version: '10.0'
128
117
  - !ruby/object:Gem::Dependency
129
118
  name: rubocop
130
119
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
120
  requirements:
133
- - - ~>
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.51.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.51.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: timecop
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
134
136
  - !ruby/object:Gem::Version
135
- version: 0.41.2
137
+ version: '0.7'
136
138
  type: :development
137
139
  prerelease: false
138
140
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
141
  requirements:
141
- - - ~>
142
+ - - "~>"
142
143
  - !ruby/object:Gem::Version
143
- version: 0.41.2
144
+ version: '0.7'
144
145
  description:
145
146
  email:
146
147
  - bjohnson@binarylogic.com
148
+ - tieg.zaharia@gmail.com
149
+ - jared@jaredbeck.com
147
150
  executables: []
148
151
  extensions: []
149
152
  extra_rdoc_files: []
150
153
  files:
151
- - .github/ISSUE_TEMPLATE.md
152
- - .gitignore
153
- - .rubocop.yml
154
- - .rubocop_todo.yml
155
- - .travis.yml
154
+ - ".github/ISSUE_TEMPLATE.md"
155
+ - ".github/triage.md"
156
+ - ".gitignore"
157
+ - ".rubocop.yml"
158
+ - ".rubocop_todo.yml"
159
+ - ".travis.yml"
156
160
  - CHANGELOG.md
157
161
  - CONTRIBUTING.md
158
162
  - Gemfile
159
163
  - LICENSE
160
164
  - README.md
161
165
  - Rakefile
166
+ - UPGRADING.md
162
167
  - authlogic.gemspec
163
168
  - lib/authlogic.rb
164
169
  - lib/authlogic/acts_as_authentic/base.rb
@@ -169,6 +174,7 @@ files:
169
174
  - lib/authlogic/acts_as_authentic/password.rb
170
175
  - lib/authlogic/acts_as_authentic/perishable_token.rb
171
176
  - lib/authlogic/acts_as_authentic/persistence_token.rb
177
+ - lib/authlogic/acts_as_authentic/queries/find_with_case.rb
172
178
  - lib/authlogic/acts_as_authentic/restful_authentication.rb
173
179
  - lib/authlogic/acts_as_authentic/session_maintenance.rb
174
180
  - lib/authlogic/acts_as_authentic/single_access_token.rb
@@ -222,6 +228,7 @@ files:
222
228
  - lib/authlogic/test_case/mock_logger.rb
223
229
  - lib/authlogic/test_case/mock_request.rb
224
230
  - lib/authlogic/test_case/rails_request_adapter.rb
231
+ - lib/authlogic/version.rb
225
232
  - test/acts_as_authentic_test/base_test.rb
226
233
  - test/acts_as_authentic_test/email_test.rb
227
234
  - test/acts_as_authentic_test/logged_in_status_test.rb
@@ -233,6 +240,7 @@ files:
233
240
  - test/acts_as_authentic_test/restful_authentication_test.rb
234
241
  - test/acts_as_authentic_test/session_maintenance_test.rb
235
242
  - test/acts_as_authentic_test/single_access_test.rb
243
+ - test/adapter_test.rb
236
244
  - test/authenticates_many_test.rb
237
245
  - test/config_test.rb
238
246
  - test/crypto_provider_test/aes256_test.rb
@@ -245,13 +253,11 @@ files:
245
253
  - test/fixtures/employees.yml
246
254
  - test/fixtures/projects.yml
247
255
  - test/fixtures/users.yml
248
- - test/gemfiles/Gemfile.rails-3.2.x
249
- - test/gemfiles/Gemfile.rails-4.0.x
250
- - test/gemfiles/Gemfile.rails-4.1.x
251
256
  - test/gemfiles/Gemfile.rails-4.2.x
252
257
  - test/gemfiles/Gemfile.rails-5.0.x
253
258
  - test/gemfiles/Gemfile.rails-5.1.x
254
259
  - test/gemfiles/Gemfile.rails-5.2.x
260
+ - test/gemfiles/Gemfile.rails-master
255
261
  - test/i18n/lol.yml
256
262
  - test/i18n_test.rb
257
263
  - test/libs/affiliate.rb
@@ -289,27 +295,26 @@ files:
289
295
  homepage: http://github.com/binarylogic/authlogic
290
296
  licenses:
291
297
  - MIT
298
+ metadata: {}
292
299
  post_install_message:
293
300
  rdoc_options: []
294
301
  require_paths:
295
302
  - lib
296
303
  required_ruby_version: !ruby/object:Gem::Requirement
297
- none: false
298
304
  requirements:
299
- - - ! '>='
305
+ - - ">="
300
306
  - !ruby/object:Gem::Version
301
- version: '0'
307
+ version: 2.2.0
302
308
  required_rubygems_version: !ruby/object:Gem::Requirement
303
- none: false
304
309
  requirements:
305
- - - ! '>='
310
+ - - ">="
306
311
  - !ruby/object:Gem::Version
307
312
  version: '0'
308
313
  requirements: []
309
314
  rubyforge_project:
310
- rubygems_version: 1.8.23.2
315
+ rubygems_version: 2.7.6
311
316
  signing_key:
312
- specification_version: 3
317
+ specification_version: 4
313
318
  summary: A clean, simple, and unobtrusive ruby authentication solution.
314
319
  test_files:
315
320
  - test/acts_as_authentic_test/base_test.rb
@@ -323,6 +328,7 @@ test_files:
323
328
  - test/acts_as_authentic_test/restful_authentication_test.rb
324
329
  - test/acts_as_authentic_test/session_maintenance_test.rb
325
330
  - test/acts_as_authentic_test/single_access_test.rb
331
+ - test/adapter_test.rb
326
332
  - test/authenticates_many_test.rb
327
333
  - test/config_test.rb
328
334
  - test/crypto_provider_test/aes256_test.rb
@@ -335,13 +341,11 @@ test_files:
335
341
  - test/fixtures/employees.yml
336
342
  - test/fixtures/projects.yml
337
343
  - test/fixtures/users.yml
338
- - test/gemfiles/Gemfile.rails-3.2.x
339
- - test/gemfiles/Gemfile.rails-4.0.x
340
- - test/gemfiles/Gemfile.rails-4.1.x
341
344
  - test/gemfiles/Gemfile.rails-4.2.x
342
345
  - test/gemfiles/Gemfile.rails-5.0.x
343
346
  - test/gemfiles/Gemfile.rails-5.1.x
344
347
  - test/gemfiles/Gemfile.rails-5.2.x
348
+ - test/gemfiles/Gemfile.rails-master
345
349
  - test/i18n/lol.yml
346
350
  - test/i18n_test.rb
347
351
  - test/libs/affiliate.rb