authlogic 3.8.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/triage.md +87 -0
- data/.gitignore +2 -1
- data/.rubocop.yml +62 -6
- data/.rubocop_todo.yml +51 -267
- data/.travis.yml +4 -26
- data/CHANGELOG.md +226 -2
- data/CONTRIBUTING.md +15 -5
- data/Gemfile +2 -2
- data/README.md +183 -91
- data/Rakefile +1 -1
- data/UPGRADING.md +20 -0
- data/authlogic.gemspec +25 -16
- data/lib/authlogic.rb +45 -45
- data/lib/authlogic/acts_as_authentic/base.rb +18 -11
- data/lib/authlogic/acts_as_authentic/email.rb +32 -28
- data/lib/authlogic/acts_as_authentic/logged_in_status.rb +1 -1
- data/lib/authlogic/acts_as_authentic/login.rb +32 -42
- data/lib/authlogic/acts_as_authentic/magic_columns.rb +6 -6
- data/lib/authlogic/acts_as_authentic/password.rb +53 -31
- data/lib/authlogic/acts_as_authentic/perishable_token.rb +18 -17
- data/lib/authlogic/acts_as_authentic/persistence_token.rb +7 -12
- data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +64 -0
- data/lib/authlogic/acts_as_authentic/restful_authentication.rb +11 -3
- data/lib/authlogic/acts_as_authentic/session_maintenance.rb +30 -10
- data/lib/authlogic/acts_as_authentic/single_access_token.rb +4 -4
- data/lib/authlogic/authenticates_many/association.rb +3 -3
- data/lib/authlogic/authenticates_many/base.rb +2 -2
- data/lib/authlogic/config.rb +0 -1
- data/lib/authlogic/controller_adapters/abstract_adapter.rb +11 -4
- data/lib/authlogic/controller_adapters/rack_adapter.rb +7 -3
- data/lib/authlogic/controller_adapters/rails_adapter.rb +2 -0
- data/lib/authlogic/crypto_providers/aes256.rb +1 -1
- data/lib/authlogic/crypto_providers/bcrypt.rb +1 -1
- data/lib/authlogic/crypto_providers/scrypt.rb +6 -6
- data/lib/authlogic/crypto_providers/sha1.rb +10 -5
- data/lib/authlogic/crypto_providers/sha256.rb +11 -8
- data/lib/authlogic/crypto_providers/wordpress.rb +2 -2
- data/lib/authlogic/i18n.rb +4 -2
- data/lib/authlogic/random.rb +10 -28
- data/lib/authlogic/regex.rb +11 -8
- data/lib/authlogic/session/activation.rb +6 -3
- data/lib/authlogic/session/active_record_trickery.rb +13 -9
- data/lib/authlogic/session/base.rb +15 -4
- data/lib/authlogic/session/brute_force_protection.rb +14 -7
- data/lib/authlogic/session/callbacks.rb +53 -30
- data/lib/authlogic/session/cookies.rb +57 -16
- data/lib/authlogic/session/existence.rb +21 -11
- data/lib/authlogic/session/foundation.rb +56 -10
- data/lib/authlogic/session/http_auth.rb +15 -8
- data/lib/authlogic/session/klass.rb +7 -5
- data/lib/authlogic/session/magic_columns.rb +24 -11
- data/lib/authlogic/session/magic_states.rb +11 -4
- data/lib/authlogic/session/params.rb +6 -2
- data/lib/authlogic/session/password.rb +46 -73
- data/lib/authlogic/session/persistence.rb +11 -7
- data/lib/authlogic/session/priority_record.rb +7 -4
- data/lib/authlogic/session/scopes.rb +15 -6
- data/lib/authlogic/session/session.rb +20 -10
- data/lib/authlogic/session/timeout.rb +2 -2
- data/lib/authlogic/session/unauthorized_record.rb +1 -1
- data/lib/authlogic/session/validation.rb +1 -1
- data/lib/authlogic/test_case.rb +65 -2
- data/lib/authlogic/test_case/mock_controller.rb +5 -4
- data/lib/authlogic/test_case/mock_cookie_jar.rb +11 -2
- data/lib/authlogic/test_case/mock_request.rb +5 -1
- data/lib/authlogic/test_case/rails_request_adapter.rb +3 -2
- data/lib/authlogic/version.rb +16 -0
- data/test/acts_as_authentic_test/email_test.rb +33 -34
- data/test/acts_as_authentic_test/logged_in_status_test.rb +1 -1
- data/test/acts_as_authentic_test/login_test.rb +73 -78
- data/test/acts_as_authentic_test/password_test.rb +30 -18
- data/test/acts_as_authentic_test/perishable_token_test.rb +9 -3
- data/test/acts_as_authentic_test/persistence_token_test.rb +4 -0
- data/test/acts_as_authentic_test/session_maintenance_test.rb +66 -14
- data/test/adapter_test.rb +21 -0
- data/test/gemfiles/Gemfile.rails-4.2.x +2 -2
- data/test/gemfiles/Gemfile.rails-5.0.x +2 -2
- data/test/gemfiles/Gemfile.rails-master +6 -0
- data/test/i18n_test.rb +1 -1
- data/test/libs/company.rb +2 -2
- data/test/random_test.rb +7 -37
- data/test/session_test/active_record_trickery_test.rb +4 -3
- data/test/session_test/brute_force_protection_test.rb +8 -8
- data/test/session_test/callbacks_test.rb +1 -1
- data/test/session_test/cookies_test.rb +27 -4
- data/test/session_test/existence_test.rb +15 -4
- data/test/session_test/foundation_test.rb +16 -0
- data/test/session_test/http_auth_test.rb +3 -1
- data/test/session_test/magic_columns_test.rb +10 -12
- data/test/session_test/params_test.rb +4 -1
- data/test/session_test/password_test.rb +7 -7
- data/test/session_test/persistence_test.rb +1 -0
- data/test/session_test/scopes_test.rb +7 -7
- data/test/session_test/session_test.rb +2 -2
- data/test/session_test/timeout_test.rb +1 -1
- data/test/session_test/unauthorized_record_test.rb +1 -1
- data/test/test_helper.rb +111 -103
- metadata +68 -64
- data/test/gemfiles/Gemfile.rails-3.2.x +0 -7
- data/test/gemfiles/Gemfile.rails-4.0.x +0 -7
- data/test/gemfiles/Gemfile.rails-4.1.x +0 -7
@@ -6,7 +6,7 @@ module SessionTest
|
|
6
6
|
assert_nil Authlogic::Session::Base.scope
|
7
7
|
|
8
8
|
thread1 = Thread.new do
|
9
|
-
scope = { :
|
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 = { :
|
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(:
|
31
|
-
assert_equal({ :
|
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(:
|
38
|
+
UserSession.with_scope(find_options: { conditions: "awesome = 1" }, id: "some_id") do
|
39
39
|
session = UserSession.new
|
40
|
-
assert_equal({ :
|
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 = { :
|
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
|
-
:
|
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"] = { :
|
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(:
|
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({ :
|
10
|
+
assert_equal({ unauthorized_record: "<protected>" }, session.credentials)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/test/test_helper.rb
CHANGED
@@ -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(:
|
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(:
|
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, :
|
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, :
|
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, :
|
59
|
-
t.integer :failed_login_count, :
|
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, :
|
66
|
-
t.boolean :approved, :
|
67
|
-
t.boolean :confirmed, :
|
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, :
|
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'
|
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
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
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
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
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
|
-
|
157
|
-
|
158
|
-
|
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
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
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
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
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
|
-
|
183
|
-
|
184
|
-
|
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
|
-
|
187
|
-
|
188
|
-
|
193
|
+
def unset_cookie
|
194
|
+
controller.cookies["user_credentials"] = nil
|
195
|
+
end
|
189
196
|
|
190
|
-
|
191
|
-
|
192
|
-
|
197
|
+
def set_params_for(user)
|
198
|
+
controller.params["user_credentials"] = user.single_access_token
|
199
|
+
end
|
193
200
|
|
194
|
-
|
195
|
-
|
196
|
-
|
201
|
+
def unset_params
|
202
|
+
controller.params["user_credentials"] = nil
|
203
|
+
end
|
197
204
|
|
198
|
-
|
199
|
-
|
200
|
-
|
205
|
+
def set_request_content_type(type)
|
206
|
+
controller.request_content_type = type
|
207
|
+
end
|
201
208
|
|
202
|
-
|
203
|
-
|
204
|
-
|
209
|
+
def unset_request_content_type
|
210
|
+
controller.request_content_type = nil
|
211
|
+
end
|
205
212
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
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
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
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
|
-
|
231
|
-
|
232
|
-
|
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:
|
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-
|
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: '
|
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: '
|
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: '
|
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: '
|
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:
|
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
|
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
|
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.
|
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.
|
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
|
-
- .
|
153
|
-
- .
|
154
|
-
- .
|
155
|
-
- .
|
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:
|
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:
|
315
|
+
rubygems_version: 2.7.6
|
311
316
|
signing_key:
|
312
|
-
specification_version:
|
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
|