authlogic 3.3.0 → 3.4.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.
- checksums.yaml +7 -0
- data/.gitignore +3 -1
- data/.travis.yml +27 -0
- data/CONTRIBUTING.md +10 -0
- data/Gemfile.lock +46 -28
- data/History +10 -0
- data/README.rdoc +2 -0
- data/Rakefile +0 -13
- data/authlogic.gemspec +8 -7
- data/lib/authlogic/acts_as_authentic/email.rb +1 -1
- data/lib/authlogic/acts_as_authentic/login.rb +12 -13
- data/lib/authlogic/acts_as_authentic/password.rb +47 -47
- data/lib/authlogic/acts_as_authentic/perishable_token.rb +1 -1
- data/lib/authlogic/acts_as_authentic/persistence_token.rb +1 -1
- data/lib/authlogic/authenticates_many/base.rb +1 -1
- data/lib/authlogic/controller_adapters/sinatra_adapter.rb +1 -1
- data/lib/authlogic/crypto_providers/bcrypt.rb +19 -18
- data/lib/authlogic/crypto_providers/scrypt.rb +7 -6
- data/lib/authlogic/regex.rb +3 -2
- data/lib/authlogic/session/activation.rb +5 -3
- data/lib/authlogic/session/active_record_trickery.rb +23 -1
- data/lib/authlogic/session/callbacks.rb +8 -3
- data/lib/authlogic/session/cookies.rb +52 -17
- data/lib/authlogic/session/foundation.rb +1 -9
- data/lib/authlogic/session/magic_columns.rb +3 -3
- data/lib/authlogic/session/scopes.rb +11 -4
- data/lib/authlogic/session/session.rb +8 -8
- data/lib/authlogic/test_case.rb +7 -5
- data/lib/authlogic/test_case/mock_cookie_jar.rb +25 -0
- data/lib/authlogic/test_case/mock_request.rb +2 -2
- data/test/acts_as_authentic_test/logged_in_status_test.rb +3 -3
- data/test/acts_as_authentic_test/password_test.rb +16 -7
- data/test/crypto_provider_test/bcrypt_test.rb +1 -9
- data/test/fixtures/users.yml +13 -1
- data/test/gemfiles/Gemfile.rails-3.2.x +5 -0
- data/test/gemfiles/Gemfile.rails-4.0.x +5 -0
- data/test/gemfiles/Gemfile.rails-4.1.x +5 -0
- data/test/session_test/active_record_trickery_test.rb +29 -0
- data/test/session_test/cookies_test.rb +26 -1
- data/test/session_test/session_test.rb +7 -7
- data/test/test_helper.rb +3 -1
- metadata +59 -55
- data/lib/authlogic/controller_adapters/rack_adapter.rb +0 -63
@@ -12,7 +12,7 @@ module Authlogic
|
|
12
12
|
after_persisting :update_session, :unless => :single_access?
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
# Configuration for the session feature.
|
17
17
|
module Config
|
18
18
|
# Works exactly like cookie_key, but for sessions. See cookie_key for more info.
|
@@ -24,7 +24,7 @@ module Authlogic
|
|
24
24
|
end
|
25
25
|
alias_method :session_key=, :session_key
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
# Instance methods for the session feature.
|
29
29
|
module InstanceMethods
|
30
30
|
private
|
@@ -35,23 +35,23 @@ module Authlogic
|
|
35
35
|
# Allow finding by persistence token, because when records are created the session is maintained in a before_save, when there is no id.
|
36
36
|
# This is done for performance reasons and to save on queries.
|
37
37
|
record = record_id.nil? ?
|
38
|
-
search_for_record("find_by_persistence_token", persistence_token
|
39
|
-
search_for_record("find_by_#{klass.primary_key}", record_id
|
38
|
+
search_for_record("find_by_persistence_token", persistence_token) :
|
39
|
+
search_for_record("find_by_#{klass.primary_key}", record_id)
|
40
40
|
self.unauthorized_record = record if record && record.persistence_token == persistence_token
|
41
41
|
valid?
|
42
42
|
else
|
43
43
|
false
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def session_credentials
|
48
|
-
[controller.session[session_key], controller.session["#{session_key}_#{klass.primary_key}"]].compact
|
48
|
+
[controller.session[session_key], controller.session["#{session_key}_#{klass.primary_key}"]].collect { |i| i.nil? ? i : i.to_s }.compact
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def session_key
|
52
52
|
build_key(self.class.session_key)
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
def update_session
|
56
56
|
controller.session[session_key] = record && record.persistence_token
|
57
57
|
controller.session["#{session_key}_#{klass.primary_key}"] = record && record.send(record.class.primary_key)
|
data/lib/authlogic/test_case.rb
CHANGED
@@ -56,7 +56,7 @@ module Authlogic
|
|
56
56
|
#
|
57
57
|
# setup :activate_authlogic
|
58
58
|
#
|
59
|
-
# For those of you unfamiliar with TestUnit, the setup method
|
59
|
+
# For those of you unfamiliar with TestUnit, the setup method basically just executes a method before any test is ran.
|
60
60
|
# It is essentially "setting up" your tests.
|
61
61
|
#
|
62
62
|
# Once you have done this, just log users in like usual:
|
@@ -69,7 +69,7 @@ module Authlogic
|
|
69
69
|
# === Integration tests
|
70
70
|
#
|
71
71
|
# Again, just like functional tests, you don't have to do anything. As soon as you make a request, Authlogic will be
|
72
|
-
#
|
72
|
+
# connected. If you want to activate Authlogic before making a request follow the same steps described in the
|
73
73
|
# "functional tests" section above. It works in the same manner.
|
74
74
|
#
|
75
75
|
# === Unit tests
|
@@ -81,7 +81,7 @@ module Authlogic
|
|
81
81
|
# that looks like a controller, acts like a controller, but isn't a "real" controller. You are essentially connecting
|
82
82
|
# Authlogic to your "mock" controller, then you can test off of the mock controller to make sure everything is functioning
|
83
83
|
# properly.
|
84
|
-
#
|
84
|
+
#
|
85
85
|
# I use a mock controller to test Authlogic myself. It's part of the Authlogic library that you can easily use. It's as simple
|
86
86
|
# as functional and integration tests. Just do the following:
|
87
87
|
#
|
@@ -108,13 +108,15 @@ module Authlogic
|
|
108
108
|
|
109
109
|
Authlogic::Session::Base.controller = (@request && Authlogic::TestCase::RailsRequestAdapter.new(@request)) || controller
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
# The Authlogic::TestCase::MockController object passed to Authlogic to activate it. You can access this in your test.
|
113
113
|
# See the module description for an example.
|
114
114
|
def controller
|
115
115
|
@controller ||= Authlogic::TestCase::MockController.new
|
116
116
|
end
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
119
|
::Test::Unit::TestCase.send(:include, TestCase) if defined?(::Test::Unit::TestCase)
|
120
|
+
::MiniTest::Unit::TestCase.send(:include, TestCase) if defined?(::MiniTest::Unit::TestCase)
|
121
|
+
::MiniTest::Test.send(:include, TestCase) if defined?(::MiniTest::Test)
|
120
122
|
end
|
@@ -9,6 +9,31 @@ module Authlogic
|
|
9
9
|
def delete(key, options = {})
|
10
10
|
super(key)
|
11
11
|
end
|
12
|
+
|
13
|
+
def signed
|
14
|
+
@signed ||= MockSignedCookieJar.new(self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class MockSignedCookieJar < MockCookieJar
|
19
|
+
attr_reader :parent_jar # helper for testing
|
20
|
+
|
21
|
+
def initialize(parent_jar)
|
22
|
+
@parent_jar = parent_jar
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](val)
|
26
|
+
if signed_message = @parent_jar[val]
|
27
|
+
payload, signature = signed_message.split('--')
|
28
|
+
raise "Invalid signature" unless Digest::SHA1.hexdigest(payload) == signature
|
29
|
+
payload
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def []=(key, options)
|
34
|
+
options[:value] = "#{options[:value]}--#{Digest::SHA1.hexdigest options[:value]}"
|
35
|
+
@parent_jar[key] = options
|
36
|
+
end
|
12
37
|
end
|
13
38
|
end
|
14
39
|
end
|
@@ -7,7 +7,7 @@ module Authlogic
|
|
7
7
|
self.controller = controller
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def remote_ip
|
11
11
|
(controller && controller.respond_to?(:env) && controller.env.is_a?(Hash) && controller.env['REMOTE_ADDR']) || "1.1.1.1"
|
12
12
|
end
|
13
13
|
|
@@ -16,4 +16,4 @@ module Authlogic
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -36,9 +36,9 @@ module ActsAsAuthenticTest
|
|
36
36
|
# test happens so fast that the test fails... I just don't know a better way to test it!
|
37
37
|
assert User.logged_in.where_values != User.logged_out.where_values, ERROR_MSG % '#logged_out'
|
38
38
|
|
39
|
-
assert_equal
|
39
|
+
assert_equal 3, User.logged_out.count
|
40
40
|
User.first.update_attribute(:last_request_at, Time.now)
|
41
|
-
assert_equal
|
41
|
+
assert_equal 2, User.logged_out.count
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_logged_in_logged_out
|
@@ -50,4 +50,4 @@ module ActsAsAuthenticTest
|
|
50
50
|
assert !u.logged_out?
|
51
51
|
end
|
52
52
|
end
|
53
|
-
end
|
53
|
+
end
|
@@ -84,7 +84,7 @@ module ActsAsAuthenticTest
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def test_crypto_provider_config
|
87
|
-
assert_equal Authlogic::CryptoProviders::
|
87
|
+
assert_equal Authlogic::CryptoProviders::SCrypt, User.crypto_provider
|
88
88
|
assert_equal Authlogic::CryptoProviders::AES256, Employee.crypto_provider
|
89
89
|
|
90
90
|
User.crypto_provider = Authlogic::CryptoProviders::BCrypt
|
@@ -111,7 +111,12 @@ module ActsAsAuthenticTest
|
|
111
111
|
|
112
112
|
u.password = "test"
|
113
113
|
assert !u.valid?
|
114
|
-
|
114
|
+
|
115
|
+
if ActiveModel.respond_to?(:version) and ActiveModel.version.segments.first >= 4
|
116
|
+
assert u.errors[:password_confirmation].size == 5
|
117
|
+
else
|
118
|
+
assert u.errors[:password_confirmation].size == 0
|
119
|
+
end
|
115
120
|
end
|
116
121
|
|
117
122
|
def test_validates_confirmation_of_password
|
@@ -119,8 +124,12 @@ module ActsAsAuthenticTest
|
|
119
124
|
u.password = "test"
|
120
125
|
u.password_confirmation = "test2"
|
121
126
|
assert !u.valid?
|
122
|
-
assert u.errors[:password].size > 0
|
123
|
-
|
127
|
+
# assert u.errors[:password].size > 0
|
128
|
+
if ActiveModel.respond_to?(:version) and ActiveModel.version.segments.first >= 4
|
129
|
+
assert u.errors[:password_confirmation].size > 0
|
130
|
+
else
|
131
|
+
assert u.errors[:password].size > 0
|
132
|
+
end
|
124
133
|
u.password_confirmation = "test"
|
125
134
|
assert !u.valid?
|
126
135
|
assert u.errors[:password].size == 0
|
@@ -166,10 +175,10 @@ module ActsAsAuthenticTest
|
|
166
175
|
end
|
167
176
|
|
168
177
|
def test_checks_password_against_database
|
169
|
-
ben = users(:
|
178
|
+
ben = users(:aaron)
|
170
179
|
ben.password = "new pass"
|
171
180
|
assert !ben.valid_password?("new pass")
|
172
|
-
assert ben.valid_password?("
|
181
|
+
assert ben.valid_password?("aaronrocks")
|
173
182
|
end
|
174
183
|
|
175
184
|
def test_checks_password_against_database_and_always_fails_on_new_records
|
@@ -233,4 +242,4 @@ module ActsAsAuthenticTest
|
|
233
242
|
end
|
234
243
|
end
|
235
244
|
end
|
236
|
-
end
|
245
|
+
end
|
@@ -5,18 +5,10 @@ module CryptoProviderTest
|
|
5
5
|
def test_encrypt
|
6
6
|
assert Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def test_matches
|
10
10
|
hash = Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
|
11
11
|
assert Authlogic::CryptoProviders::BCrypt.matches?(hash, "mypass")
|
12
12
|
end
|
13
|
-
|
14
|
-
def test_minimum_cost
|
15
|
-
Authlogic::CryptoProviders::BCrypt.cost = 4
|
16
|
-
assert_equal 4, Authlogic::CryptoProviders::BCrypt.cost
|
17
|
-
|
18
|
-
assert_raises(ArgumentError) { Authlogic::CryptoProviders::BCrypt.cost = 2 }
|
19
|
-
assert_equal 4, Authlogic::CryptoProviders::BCrypt.cost
|
20
|
-
end
|
21
13
|
end
|
22
14
|
end
|
data/test/fixtures/users.yml
CHANGED
@@ -21,4 +21,16 @@ zack:
|
|
21
21
|
single_access_token: <%= Authlogic::Random.friendly_token %>
|
22
22
|
email: zham@ziggityzack.com
|
23
23
|
first_name: Zack
|
24
|
-
last_name: Ham
|
24
|
+
last_name: Ham
|
25
|
+
|
26
|
+
aaron:
|
27
|
+
company: cigital
|
28
|
+
projects: web_services
|
29
|
+
login: abedra
|
30
|
+
crypted_password: <%= Authlogic::CryptoProviders::SCrypt.encrypt("aaronrocks") %>
|
31
|
+
persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
|
32
|
+
single_access_token: <%= Authlogic::Random.friendly_token %>
|
33
|
+
perishable_token: <%= Authlogic::Random.friendly_token %>
|
34
|
+
email: abedra@cigital.com
|
35
|
+
first_name: Aaron
|
36
|
+
last_name: Bedra
|
@@ -28,7 +28,36 @@ module SessionTest
|
|
28
28
|
session = UserSession.new
|
29
29
|
assert session.new_record?
|
30
30
|
end
|
31
|
+
|
32
|
+
def test_to_key
|
33
|
+
ben = users(:ben)
|
34
|
+
session = UserSession.new(ben)
|
35
|
+
assert_nil session.to_key
|
36
|
+
|
37
|
+
session.save
|
38
|
+
assert_not_nil session.to_key
|
39
|
+
assert_equal ben.to_key, session.to_key
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_persisted
|
43
|
+
session = UserSession.new(users(:ben))
|
44
|
+
assert ! session.persisted?
|
45
|
+
|
46
|
+
session.save
|
47
|
+
assert session.persisted?
|
48
|
+
|
49
|
+
session.destroy
|
50
|
+
assert ! session.persisted?
|
51
|
+
end
|
31
52
|
|
53
|
+
def test_destroyed?
|
54
|
+
session = UserSession.create(users(:ben))
|
55
|
+
assert ! session.destroyed?
|
56
|
+
|
57
|
+
session.destroy
|
58
|
+
assert session.destroyed?
|
59
|
+
end
|
60
|
+
|
32
61
|
def test_to_model
|
33
62
|
session = UserSession.new
|
34
63
|
assert_equal session, session.to_model
|
@@ -65,6 +65,18 @@ module SessionTest
|
|
65
65
|
session = UserSession.new
|
66
66
|
assert_equal false, session.httponly
|
67
67
|
end
|
68
|
+
|
69
|
+
def test_sign_cookie
|
70
|
+
UserSession.sign_cookie = true
|
71
|
+
assert_equal true, UserSession.sign_cookie
|
72
|
+
session = UserSession.new
|
73
|
+
assert_equal true, session.sign_cookie
|
74
|
+
|
75
|
+
UserSession.sign_cookie false
|
76
|
+
assert_equal false, UserSession.sign_cookie
|
77
|
+
session = UserSession.new
|
78
|
+
assert_equal false, session.sign_cookie
|
79
|
+
end
|
68
80
|
end
|
69
81
|
|
70
82
|
class InstanceMethodsTest < ActiveSupport::TestCase
|
@@ -136,12 +148,25 @@ module SessionTest
|
|
136
148
|
assert_equal "#{ben.persistence_token}::#{ben.id}", controller.cookies["user_credentials"]
|
137
149
|
end
|
138
150
|
|
151
|
+
def test_after_save_save_cookie_signed
|
152
|
+
ben = users(:ben)
|
153
|
+
|
154
|
+
assert_nil controller.cookies["user_credentials"]
|
155
|
+
payload = "#{ben.persistence_token}::#{ben.id}"
|
156
|
+
|
157
|
+
session = UserSession.new(ben)
|
158
|
+
session.sign_cookie = true
|
159
|
+
assert session.save
|
160
|
+
assert_equal payload, controller.cookies.signed["user_credentials"]
|
161
|
+
assert_equal "#{payload}--#{Digest::SHA1.hexdigest payload}", controller.cookies.signed.parent_jar["user_credentials"]
|
162
|
+
end
|
163
|
+
|
139
164
|
def test_after_save_save_cookie_with_remember_me
|
140
165
|
ben = users(:ben)
|
141
166
|
session = UserSession.new(ben)
|
142
167
|
session.remember_me = true
|
143
168
|
assert session.save
|
144
|
-
assert_equal "#{ben.persistence_token}::#{ben.id}::#{session.remember_me_until}", controller.cookies["user_credentials"]
|
169
|
+
assert_equal "#{ben.persistence_token}::#{ben.id}::#{session.remember_me_until.iso8601}", controller.cookies["user_credentials"]
|
145
170
|
end
|
146
171
|
|
147
172
|
def test_after_destroy_destroy_cookie
|
@@ -6,12 +6,12 @@ module SessionTest
|
|
6
6
|
def test_session_key
|
7
7
|
UserSession.session_key = "my_session_key"
|
8
8
|
assert_equal "my_session_key", UserSession.session_key
|
9
|
-
|
9
|
+
|
10
10
|
UserSession.session_key "user_credentials"
|
11
11
|
assert_equal "user_credentials", UserSession.session_key
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
class InstanceMethodsTest < ActiveSupport::TestCase
|
16
16
|
def test_persist_persist_by_session
|
17
17
|
ben = users(:ben)
|
@@ -38,16 +38,16 @@ module SessionTest
|
|
38
38
|
end
|
39
39
|
assert @user_session.blank?
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
def test_persist_persist_by_session_with_token_only
|
43
43
|
ben = users(:ben)
|
44
44
|
set_session_for(ben)
|
45
45
|
controller.session["user_credentials_id"] = nil
|
46
|
-
|
46
|
+
session = UserSession.find
|
47
47
|
assert_equal ben, session.record
|
48
48
|
assert_equal ben.persistence_token, controller.session["user_credentials"]
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def test_after_save_update_session
|
52
52
|
ben = users(:ben)
|
53
53
|
session = UserSession.new(ben)
|
@@ -55,7 +55,7 @@ module SessionTest
|
|
55
55
|
assert session.save
|
56
56
|
assert_equal ben.persistence_token, controller.session["user_credentials"]
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
def test_after_destroy_update_session
|
60
60
|
ben = users(:ben)
|
61
61
|
set_session_for(ben)
|
@@ -64,7 +64,7 @@ module SessionTest
|
|
64
64
|
assert session.destroy
|
65
65
|
assert controller.session["user_credentials"].blank?
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
def test_after_persisting_update_session
|
69
69
|
ben = users(:ben)
|
70
70
|
set_cookie_for(ben)
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require "test/unit"
|
2
1
|
require "rubygems"
|
2
|
+
require "minitest/autorun"
|
3
3
|
require "active_record"
|
4
4
|
require "active_record/fixtures"
|
5
5
|
require "timecop"
|
6
6
|
require "i18n"
|
7
7
|
|
8
|
+
|
8
9
|
I18n.load_path << File.dirname(__FILE__) + '/i18n/lol.yml'
|
9
10
|
|
10
11
|
#ActiveRecord::Schema.verbose = false
|
@@ -14,6 +15,7 @@ logger.level= Logger::FATAL
|
|
14
15
|
ActiveRecord::Base.logger = logger
|
15
16
|
|
16
17
|
ActiveRecord::Base.configurations = true
|
18
|
+
ActiveRecord::Base.default_timezone = :local
|
17
19
|
ActiveRecord::Schema.define(:version => 1) do
|
18
20
|
create_table :companies do |t|
|
19
21
|
t.datetime :created_at
|
metadata
CHANGED
@@ -1,144 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authlogic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
5
|
-
prerelease:
|
4
|
+
version: 3.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ben Johnson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.2'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '3.2'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: activesupport
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '3.2'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '3.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: request_store
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.5
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.5
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rake
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ">="
|
52
60
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
61
|
+
version: 10.1.1
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ">="
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
68
|
+
version: 10.1.1
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: bcrypt-ruby
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
75
|
+
version: 3.1.5
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - ">="
|
76
81
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
82
|
+
version: 3.1.5
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: scrypt
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - ">="
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
89
|
+
version: 1.2.0
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - ">="
|
92
95
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
96
|
+
version: 1.2.0
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
98
|
name: sqlite3
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - ">="
|
100
102
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
103
|
+
version: 1.3.9
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - ">="
|
108
109
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
+
version: 1.3.9
|
110
111
|
- !ruby/object:Gem::Dependency
|
111
112
|
name: timecop
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 0.7.1
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
121
|
requirements:
|
123
|
-
- -
|
122
|
+
- - ">="
|
124
123
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
124
|
+
version: 0.7.1
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
126
|
name: i18n
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
|
-
- -
|
129
|
+
- - ">="
|
132
130
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
131
|
+
version: 0.6.9
|
134
132
|
type: :development
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
|
-
- -
|
136
|
+
- - ">="
|
140
137
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
138
|
+
version: 0.6.9
|
142
139
|
description: A clean, simple, and unobtrusive ruby authentication solution.
|
143
140
|
email:
|
144
141
|
- bjohnson@binarylogic.com
|
@@ -146,9 +143,12 @@ executables: []
|
|
146
143
|
extensions: []
|
147
144
|
extra_rdoc_files: []
|
148
145
|
files:
|
149
|
-
- .gitignore
|
146
|
+
- ".gitignore"
|
147
|
+
- ".travis.yml"
|
148
|
+
- CONTRIBUTING.md
|
150
149
|
- Gemfile
|
151
150
|
- Gemfile.lock
|
151
|
+
- History
|
152
152
|
- LICENSE
|
153
153
|
- README.rdoc
|
154
154
|
- Rakefile
|
@@ -169,7 +169,6 @@ files:
|
|
169
169
|
- lib/authlogic/authenticates_many/association.rb
|
170
170
|
- lib/authlogic/authenticates_many/base.rb
|
171
171
|
- lib/authlogic/controller_adapters/abstract_adapter.rb
|
172
|
-
- lib/authlogic/controller_adapters/rack_adapter.rb
|
173
172
|
- lib/authlogic/controller_adapters/rails_adapter.rb
|
174
173
|
- lib/authlogic/controller_adapters/sinatra_adapter.rb
|
175
174
|
- lib/authlogic/crypto_providers/aes256.rb
|
@@ -235,6 +234,9 @@ files:
|
|
235
234
|
- test/fixtures/employees.yml
|
236
235
|
- test/fixtures/projects.yml
|
237
236
|
- test/fixtures/users.yml
|
237
|
+
- test/gemfiles/Gemfile.rails-3.2.x
|
238
|
+
- test/gemfiles/Gemfile.rails-4.0.x
|
239
|
+
- test/gemfiles/Gemfile.rails-4.1.x
|
238
240
|
- test/i18n/lol.yml
|
239
241
|
- test/i18n_test.rb
|
240
242
|
- test/libs/affiliate.rb
|
@@ -271,27 +273,26 @@ files:
|
|
271
273
|
- test/test_helper.rb
|
272
274
|
homepage: http://github.com/binarylogic/authlogic
|
273
275
|
licenses: []
|
276
|
+
metadata: {}
|
274
277
|
post_install_message:
|
275
278
|
rdoc_options: []
|
276
279
|
require_paths:
|
277
280
|
- lib
|
278
281
|
required_ruby_version: !ruby/object:Gem::Requirement
|
279
|
-
none: false
|
280
282
|
requirements:
|
281
|
-
- -
|
283
|
+
- - ">="
|
282
284
|
- !ruby/object:Gem::Version
|
283
285
|
version: '0'
|
284
286
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
285
|
-
none: false
|
286
287
|
requirements:
|
287
|
-
- -
|
288
|
+
- - ">="
|
288
289
|
- !ruby/object:Gem::Version
|
289
290
|
version: '0'
|
290
291
|
requirements: []
|
291
292
|
rubyforge_project:
|
292
|
-
rubygems_version:
|
293
|
+
rubygems_version: 2.2.2
|
293
294
|
signing_key:
|
294
|
-
specification_version:
|
295
|
+
specification_version: 4
|
295
296
|
summary: A clean, simple, and unobtrusive ruby authentication solution.
|
296
297
|
test_files:
|
297
298
|
- test/acts_as_authentic_test/base_test.rb
|
@@ -316,6 +317,9 @@ test_files:
|
|
316
317
|
- test/fixtures/employees.yml
|
317
318
|
- test/fixtures/projects.yml
|
318
319
|
- test/fixtures/users.yml
|
320
|
+
- test/gemfiles/Gemfile.rails-3.2.x
|
321
|
+
- test/gemfiles/Gemfile.rails-4.0.x
|
322
|
+
- test/gemfiles/Gemfile.rails-4.1.x
|
319
323
|
- test/i18n/lol.yml
|
320
324
|
- test/i18n_test.rb
|
321
325
|
- test/libs/affiliate.rb
|