authlogic 3.8.0 → 6.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 (150) hide show
  1. checksums.yaml +7 -0
  2. data/lib/authlogic/acts_as_authentic/base.rb +33 -36
  3. data/lib/authlogic/acts_as_authentic/email.rb +8 -141
  4. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +17 -10
  5. data/lib/authlogic/acts_as_authentic/login.rb +14 -165
  6. data/lib/authlogic/acts_as_authentic/magic_columns.rb +13 -10
  7. data/lib/authlogic/acts_as_authentic/password.rb +186 -254
  8. data/lib/authlogic/acts_as_authentic/perishable_token.rb +30 -22
  9. data/lib/authlogic/acts_as_authentic/persistence_token.rb +19 -18
  10. data/lib/authlogic/acts_as_authentic/queries/case_sensitivity.rb +53 -0
  11. data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +83 -0
  12. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +94 -62
  13. data/lib/authlogic/acts_as_authentic/single_access_token.rb +28 -14
  14. data/lib/authlogic/config.rb +29 -10
  15. data/lib/authlogic/controller_adapters/abstract_adapter.rb +43 -13
  16. data/lib/authlogic/controller_adapters/rack_adapter.rb +11 -5
  17. data/lib/authlogic/controller_adapters/rails_adapter.rb +11 -29
  18. data/lib/authlogic/controller_adapters/sinatra_adapter.rb +8 -2
  19. data/lib/authlogic/cookie_credentials.rb +63 -0
  20. data/lib/authlogic/crypto_providers/bcrypt.rb +24 -18
  21. data/lib/authlogic/crypto_providers/md5/v2.rb +35 -0
  22. data/lib/authlogic/crypto_providers/md5.rb +8 -6
  23. data/lib/authlogic/crypto_providers/scrypt.rb +24 -17
  24. data/lib/authlogic/crypto_providers/sha1/v2.rb +41 -0
  25. data/lib/authlogic/crypto_providers/sha1.rb +12 -5
  26. data/lib/authlogic/crypto_providers/sha256/v2.rb +58 -0
  27. data/lib/authlogic/crypto_providers/sha256.rb +18 -9
  28. data/lib/authlogic/crypto_providers/sha512/v2.rb +39 -0
  29. data/lib/authlogic/crypto_providers/sha512.rb +9 -26
  30. data/lib/authlogic/crypto_providers.rb +77 -1
  31. data/lib/authlogic/errors.rb +35 -0
  32. data/lib/authlogic/i18n/translator.rb +4 -1
  33. data/lib/authlogic/i18n.rb +29 -20
  34. data/lib/authlogic/random.rb +12 -28
  35. data/lib/authlogic/session/base.rb +2087 -33
  36. data/lib/authlogic/session/magic_column/assigns_last_request_at.rb +46 -0
  37. data/lib/authlogic/test_case/mock_controller.rb +7 -4
  38. data/lib/authlogic/test_case/mock_cookie_jar.rb +19 -3
  39. data/lib/authlogic/test_case/mock_logger.rb +2 -0
  40. data/lib/authlogic/test_case/mock_request.rb +8 -3
  41. data/lib/authlogic/test_case/rails_request_adapter.rb +5 -2
  42. data/lib/authlogic/test_case.rb +74 -2
  43. data/lib/authlogic/version.rb +22 -0
  44. data/lib/authlogic.rb +33 -54
  45. metadata +208 -234
  46. data/.github/ISSUE_TEMPLATE.md +0 -13
  47. data/.gitignore +0 -14
  48. data/.rubocop.yml +0 -33
  49. data/.rubocop_todo.yml +0 -391
  50. data/.travis.yml +0 -48
  51. data/CHANGELOG.md +0 -5
  52. data/CONTRIBUTING.md +0 -60
  53. data/Gemfile +0 -5
  54. data/LICENSE +0 -20
  55. data/README.md +0 -294
  56. data/Rakefile +0 -21
  57. data/authlogic.gemspec +0 -27
  58. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +0 -70
  59. data/lib/authlogic/acts_as_authentic/validations_scope.rb +0 -32
  60. data/lib/authlogic/authenticates_many/association.rb +0 -50
  61. data/lib/authlogic/authenticates_many/base.rb +0 -65
  62. data/lib/authlogic/crypto_providers/aes256.rb +0 -66
  63. data/lib/authlogic/crypto_providers/wordpress.rb +0 -43
  64. data/lib/authlogic/regex.rb +0 -48
  65. data/lib/authlogic/session/activation.rb +0 -70
  66. data/lib/authlogic/session/active_record_trickery.rb +0 -61
  67. data/lib/authlogic/session/brute_force_protection.rb +0 -120
  68. data/lib/authlogic/session/callbacks.rb +0 -105
  69. data/lib/authlogic/session/cookies.rb +0 -244
  70. data/lib/authlogic/session/existence.rb +0 -93
  71. data/lib/authlogic/session/foundation.rb +0 -55
  72. data/lib/authlogic/session/http_auth.rb +0 -100
  73. data/lib/authlogic/session/id.rb +0 -48
  74. data/lib/authlogic/session/klass.rb +0 -70
  75. data/lib/authlogic/session/magic_columns.rb +0 -116
  76. data/lib/authlogic/session/magic_states.rb +0 -76
  77. data/lib/authlogic/session/params.rb +0 -116
  78. data/lib/authlogic/session/password.rb +0 -308
  79. data/lib/authlogic/session/perishable_token.rb +0 -23
  80. data/lib/authlogic/session/persistence.rb +0 -71
  81. data/lib/authlogic/session/priority_record.rb +0 -35
  82. data/lib/authlogic/session/scopes.rb +0 -119
  83. data/lib/authlogic/session/session.rb +0 -67
  84. data/lib/authlogic/session/timeout.rb +0 -103
  85. data/lib/authlogic/session/unauthorized_record.rb +0 -51
  86. data/lib/authlogic/session/validation.rb +0 -93
  87. data/test/acts_as_authentic_test/base_test.rb +0 -25
  88. data/test/acts_as_authentic_test/email_test.rb +0 -240
  89. data/test/acts_as_authentic_test/logged_in_status_test.rb +0 -62
  90. data/test/acts_as_authentic_test/login_test.rb +0 -156
  91. data/test/acts_as_authentic_test/magic_columns_test.rb +0 -27
  92. data/test/acts_as_authentic_test/password_test.rb +0 -249
  93. data/test/acts_as_authentic_test/perishable_token_test.rb +0 -90
  94. data/test/acts_as_authentic_test/persistence_token_test.rb +0 -56
  95. data/test/acts_as_authentic_test/restful_authentication_test.rb +0 -37
  96. data/test/acts_as_authentic_test/session_maintenance_test.rb +0 -96
  97. data/test/acts_as_authentic_test/single_access_test.rb +0 -44
  98. data/test/authenticates_many_test.rb +0 -31
  99. data/test/config_test.rb +0 -36
  100. data/test/crypto_provider_test/aes256_test.rb +0 -14
  101. data/test/crypto_provider_test/bcrypt_test.rb +0 -14
  102. data/test/crypto_provider_test/scrypt_test.rb +0 -14
  103. data/test/crypto_provider_test/sha1_test.rb +0 -23
  104. data/test/crypto_provider_test/sha256_test.rb +0 -14
  105. data/test/crypto_provider_test/sha512_test.rb +0 -14
  106. data/test/fixtures/companies.yml +0 -5
  107. data/test/fixtures/employees.yml +0 -17
  108. data/test/fixtures/projects.yml +0 -3
  109. data/test/fixtures/users.yml +0 -41
  110. data/test/gemfiles/Gemfile.rails-3.2.x +0 -7
  111. data/test/gemfiles/Gemfile.rails-4.0.x +0 -7
  112. data/test/gemfiles/Gemfile.rails-4.1.x +0 -7
  113. data/test/gemfiles/Gemfile.rails-4.2.x +0 -7
  114. data/test/gemfiles/Gemfile.rails-5.0.x +0 -6
  115. data/test/gemfiles/Gemfile.rails-5.1.x +0 -6
  116. data/test/gemfiles/Gemfile.rails-5.2.x +0 -6
  117. data/test/i18n/lol.yml +0 -4
  118. data/test/i18n_test.rb +0 -33
  119. data/test/libs/affiliate.rb +0 -7
  120. data/test/libs/company.rb +0 -6
  121. data/test/libs/employee.rb +0 -7
  122. data/test/libs/employee_session.rb +0 -2
  123. data/test/libs/ldaper.rb +0 -3
  124. data/test/libs/project.rb +0 -3
  125. data/test/libs/user.rb +0 -7
  126. data/test/libs/user_session.rb +0 -25
  127. data/test/random_test.rb +0 -43
  128. data/test/session_test/activation_test.rb +0 -43
  129. data/test/session_test/active_record_trickery_test.rb +0 -75
  130. data/test/session_test/brute_force_protection_test.rb +0 -108
  131. data/test/session_test/callbacks_test.rb +0 -34
  132. data/test/session_test/cookies_test.rb +0 -201
  133. data/test/session_test/credentials_test.rb +0 -0
  134. data/test/session_test/existence_test.rb +0 -75
  135. data/test/session_test/foundation_test.rb +0 -6
  136. data/test/session_test/http_auth_test.rb +0 -56
  137. data/test/session_test/id_test.rb +0 -17
  138. data/test/session_test/klass_test.rb +0 -40
  139. data/test/session_test/magic_columns_test.rb +0 -62
  140. data/test/session_test/magic_states_test.rb +0 -58
  141. data/test/session_test/params_test.rb +0 -53
  142. data/test/session_test/password_test.rb +0 -105
  143. data/test/session_test/perishability_test.rb +0 -15
  144. data/test/session_test/persistence_test.rb +0 -32
  145. data/test/session_test/scopes_test.rb +0 -60
  146. data/test/session_test/session_test.rb +0 -78
  147. data/test/session_test/timeout_test.rb +0 -82
  148. data/test/session_test/unauthorized_record_test.rb +0 -13
  149. data/test/session_test/validation_test.rb +0 -23
  150. data/test/test_helper.rb +0 -233
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Authlogic
4
+ module Session
5
+ module MagicColumn
6
+ # Assigns the current time to the `last_request_at` attribute.
7
+ #
8
+ # 1. The `last_request_at` column must exist
9
+ # 2. Assignment can be disabled on a per-controller basis
10
+ # 3. Assignment will not happen more often than `last_request_at_threshold`
11
+ # seconds.
12
+ #
13
+ # - current_time - a `Time`
14
+ # - record - eg. a `User`
15
+ # - controller - an `Authlogic::ControllerAdapters::AbstractAdapter`
16
+ # - last_request_at_threshold - integer - seconds
17
+ #
18
+ # @api private
19
+ class AssignsLastRequestAt
20
+ def initialize(current_time, record, controller, last_request_at_threshold)
21
+ @current_time = current_time
22
+ @record = record
23
+ @controller = controller
24
+ @last_request_at_threshold = last_request_at_threshold
25
+ end
26
+
27
+ def assign
28
+ return unless assign?
29
+ @record.last_request_at = @current_time
30
+ end
31
+
32
+ private
33
+
34
+ # @api private
35
+ def assign?
36
+ @record &&
37
+ @record.class.column_names.include?("last_request_at") &&
38
+ @controller.last_request_update_allowed? && (
39
+ @record.last_request_at.blank? ||
40
+ @last_request_at_threshold.to_i.seconds.ago >= @record.last_request_at
41
+ )
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module TestCase
3
- # Basically acts like a controller but doesn't do anything. Authlogic can interact with this, do it's thing and then you
4
- # can look at the controller object to see if anything changed.
5
+ # Basically acts like a controller but doesn't do anything. Authlogic can interact
6
+ # with this, do it's thing and then you can look at the controller object to see if
7
+ # anything changed.
5
8
  class MockController < ControllerAdapters::AbstractAdapter
6
9
  attr_accessor :http_user, :http_password, :realm
7
10
  attr_writer :request_content_type
@@ -9,11 +12,11 @@ module Authlogic
9
12
  def initialize
10
13
  end
11
14
 
12
- def authenticate_with_http_basic(&block)
15
+ def authenticate_with_http_basic
13
16
  yield http_user, http_password
14
17
  end
15
18
 
16
- def authenticate_or_request_with_http_basic(realm = 'DefaultRealm', &block)
19
+ def authenticate_or_request_with_http_basic(realm = "DefaultRealm")
17
20
  self.realm = realm
18
21
  @http_auth_requested = true
19
22
  yield http_user, http_password
@@ -1,12 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module TestCase
5
+ # A mock of `ActionDispatch::Cookies::CookieJar`.
3
6
  class MockCookieJar < Hash # :nodoc:
7
+ attr_accessor :set_cookies
8
+
4
9
  def [](key)
5
10
  hash = super
6
11
  hash && hash[:value]
7
12
  end
8
13
 
9
- def delete(key, options = {})
14
+ def []=(key, options)
15
+ (@set_cookies ||= {})[key.to_s] = options
16
+ super
17
+ end
18
+
19
+ def delete(key, _options = {})
10
20
  super(key)
11
21
  end
12
22
 
@@ -15,6 +25,11 @@ module Authlogic
15
25
  end
16
26
  end
17
27
 
28
+ # A mock of `ActionDispatch::Cookies::SignedKeyRotatingCookieJar`
29
+ #
30
+ # > .. a jar that'll automatically generate a signed representation of
31
+ # > cookie value and verify it when reading from the cookie again.
32
+ # > actionpack/lib/action_dispatch/middleware/cookies.rb
18
33
  class MockSignedCookieJar < MockCookieJar
19
34
  attr_reader :parent_jar # helper for testing
20
35
 
@@ -23,8 +38,9 @@ module Authlogic
23
38
  end
24
39
 
25
40
  def [](val)
26
- if signed_message = @parent_jar[val]
27
- payload, signature = signed_message.split('--')
41
+ signed_message = @parent_jar[val]
42
+ if signed_message
43
+ payload, signature = signed_message.split("--")
28
44
  raise "Invalid signature" unless Digest::SHA1.hexdigest(payload) == signature
29
45
  payload
30
46
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module TestCase
3
5
  # Simple class to replace real loggers, so that we can raise any errors being logged.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module TestCase
3
5
  class MockRequest # :nodoc:
@@ -8,13 +10,16 @@ module Authlogic
8
10
  end
9
11
 
10
12
  def ip
11
- (controller && controller.respond_to?(:env) && controller.env.is_a?(Hash) && controller.env['REMOTE_ADDR']) || "1.1.1.1"
13
+ controller&.respond_to?(:env) &&
14
+ controller.env.is_a?(Hash) &&
15
+ controller.env["REMOTE_ADDR"] ||
16
+ "1.1.1.1"
12
17
  end
13
18
 
14
19
  private
15
20
 
16
- def method_missing(*args, &block)
17
- end
21
+ def method_missing(*args, &block)
22
+ end
18
23
  end
19
24
  end
20
25
  end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module TestCase
3
- # Adapts authlogic to work with the @request object when testing. This way Authlogic can set cookies and what not before
4
- # a request is made, ultimately letting you log in users in functional tests.
5
+ # Adapts authlogic to work with the @request object when testing. This way Authlogic
6
+ # can set cookies and what not before a request is made, ultimately letting you log in
7
+ # users in functional tests.
5
8
  class RailsRequestAdapter < ControllerAdapters::AbstractAdapter
6
9
  def authenticate_with_http_basic(&block)
7
10
  end
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require File.dirname(__FILE__) + "/test_case/rails_request_adapter"
2
4
  require File.dirname(__FILE__) + "/test_case/mock_cookie_jar"
3
5
  require File.dirname(__FILE__) + "/test_case/mock_controller"
4
6
  require File.dirname(__FILE__) + "/test_case/mock_logger"
5
7
  require File.dirname(__FILE__) + "/test_case/mock_request"
6
8
 
9
+ # :nodoc:
7
10
  module Authlogic
8
11
  # This module is a collection of methods and classes that help you easily test
9
12
  # Authlogic. In fact, I use these same tools to test the internals of
@@ -50,7 +53,7 @@ module Authlogic
50
53
  # ben:
51
54
  # email: whatever@whatever.com
52
55
  # password_salt: <%= salt = Authlogic::Random.hex_token %>
53
- # crypted_password: <%= Authlogic::CryptoProviders::Sha512.encrypt("benrocks" + salt) %>
56
+ # crypted_password: <%= Authlogic::CryptoProviders::SCrypt.encrypt("benrocks" + salt) %>
54
57
  # persistence_token: <%= Authlogic::Random.hex_token %>
55
58
  # single_access_token: <%= Authlogic::Random.friendly_token %>
56
59
  # perishable_token: <%= Authlogic::Random.friendly_token %>
@@ -113,7 +116,73 @@ module Authlogic
113
116
  #
114
117
  # See how I am checking that Authlogic is interacting with the controller
115
118
  # properly? That's the idea here.
119
+ #
120
+ # === Testing with Rails 5
121
+ #
122
+ # Rails 5 has [deprecated classic controller tests](https://goo.gl/4zmt6y).
123
+ # Controller tests now inherit from `ActionDispatch::IntegrationTest` making
124
+ # them plain old integration tests now. You have two options for testing
125
+ # AuthLogic in Rails 5:
126
+ #
127
+ # * Add the `rails-controller-testing` gem to bring back the original
128
+ # controller testing usage
129
+ # * Go full steam ahead with integration testing and actually log a user in
130
+ # by submitting a form in the integration test.
131
+ #
132
+ # Naturally DHH recommends the second method and this is
133
+ # [what he does in his own tests](https://goo.gl/Ar6p0u). This is useful
134
+ # for testing not only AuthLogic itself (submitting login credentials to a
135
+ # UserSessionsController, for example) but any controller action that is
136
+ # behind a login wall. Add a helper method and use that before testing your
137
+ # actual controller action:
138
+ #
139
+ # # test/test_helper.rb
140
+ # def login(user)
141
+ # post user_sessions_url, :params => { :email => user.email, :password => 'password' }
142
+ # end
143
+ #
144
+ # # test/controllers/posts_controller_test.rb
145
+ # test "#create requires a user to be logged in
146
+ # post posts_url, :params => { :body => 'Lorem ipsum' }
147
+ #
148
+ # assert_redirected_to new_user_session_url
149
+ # end
150
+ #
151
+ # test "#create lets a logged in user create a new post" do
152
+ # login(users(:admin))
153
+ #
154
+ # assert_difference 'Posts.count' do
155
+ # post posts_url, :params => { :body => 'Lorem ipsum' }
156
+ # end
157
+ #
158
+ # assert_redirected_to posts_url
159
+ # end
160
+ #
161
+ # You still have access to the `session` helper in an integration test and so
162
+ # you can still test to see if a user is logged in. A couple of helper methods
163
+ # might look like:
164
+ #
165
+ # # test/test_helper.rb
166
+ # def assert_logged_in
167
+ # assert session[:user_credentials].present?
168
+ # end
169
+ #
170
+ # def assert_not_logged_in
171
+ # assert session[:user_credentials].blank?
172
+ # end
173
+ #
174
+ # # test/user_sessions_controller_test.rb
175
+ # test "#create logs in a user" do
176
+ # login(users(:admin))
177
+ #
178
+ # assert_logged_in
179
+ # end
116
180
  module TestCase
181
+ def initialize(*args)
182
+ @request = nil
183
+ super
184
+ end
185
+
117
186
  # Activates authlogic so that you can use it in your tests. You should call
118
187
  # this method in your test's setup. Ex:
119
188
  #
@@ -125,7 +194,9 @@ module Authlogic
125
194
  end
126
195
  end
127
196
 
128
- Authlogic::Session::Base.controller = (@request && Authlogic::TestCase::RailsRequestAdapter.new(@request)) || controller
197
+ Authlogic::Session::Base.controller = @request &&
198
+ Authlogic::TestCase::RailsRequestAdapter.new(@request) ||
199
+ controller
129
200
  end
130
201
 
131
202
  # The Authlogic::TestCase::MockController object passed to Authlogic to
@@ -136,6 +207,7 @@ module Authlogic
136
207
  end
137
208
  end
138
209
 
210
+ # TODO: Why are these lines inside the `Authlogic` module? Should be outside?
139
211
  ::Test::Unit::TestCase.send(:include, TestCase) if defined?(::Test::Unit::TestCase)
140
212
  ::MiniTest::Unit::TestCase.send(:include, TestCase) if defined?(::MiniTest::Unit::TestCase)
141
213
  ::MiniTest::Test.send(:include, TestCase) if defined?(::MiniTest::Test)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubygems"
4
+
5
+ # :nodoc:
6
+ module Authlogic
7
+ # Returns a `::Gem::Version`, the version number of the authlogic gem.
8
+ #
9
+ # It is preferable for a library to provide a `gem_version` method, rather
10
+ # than a `VERSION` string, because `::Gem::Version` is easier to use in a
11
+ # comparison.
12
+ #
13
+ # We cannot return a frozen `Version`, because rubygems will try to modify it.
14
+ # https://github.com/binarylogic/authlogic/pull/590
15
+ #
16
+ # Added in 4.0.0
17
+ #
18
+ # @api public
19
+ def self.gem_version
20
+ ::Gem::Version.new("6.0.0")
21
+ end
22
+ end
data/lib/authlogic.rb CHANGED
@@ -1,7 +1,11 @@
1
- # Authlogic uses ActiveSupport's core extensions like `strip_heredoc`, which
2
- # ActiveRecord does not `require`. It's possible that we could save a few
3
- # milliseconds by loading only the specific core extensions we need, but
4
- # `all.rb` is simpler. We can revisit this decision if it becomes a problem.
1
+ # frozen_string_literal: true
2
+
3
+ # Authlogic uses ActiveSupport's core extensions like `strip_heredoc` and
4
+ # `squish`. ActiveRecord does not `require` these exensions, so we must.
5
+ #
6
+ # It's possible that we could save a few milliseconds by loading only the
7
+ # specific core extensions we need, but `all.rb` is simpler. We can revisit this
8
+ # decision if it becomes a problem.
5
9
  require "active_support/all"
6
10
 
7
11
  require "active_record"
@@ -9,57 +13,32 @@ require "active_record"
9
13
  path = File.dirname(__FILE__) + "/authlogic/"
10
14
 
11
15
  [
12
- "i18n",
13
- "random",
14
- "regex",
15
- "config",
16
-
17
- "controller_adapters/abstract_adapter",
18
-
19
- "crypto_providers",
20
-
21
- "authenticates_many/base",
22
- "authenticates_many/association",
23
-
24
- "acts_as_authentic/email",
25
- "acts_as_authentic/logged_in_status",
26
- "acts_as_authentic/login",
27
- "acts_as_authentic/magic_columns",
28
- "acts_as_authentic/password",
29
- "acts_as_authentic/perishable_token",
30
- "acts_as_authentic/persistence_token",
31
- "acts_as_authentic/restful_authentication",
32
- "acts_as_authentic/session_maintenance",
33
- "acts_as_authentic/single_access_token",
34
- "acts_as_authentic/validations_scope",
35
- "acts_as_authentic/base",
36
-
37
- "session/activation",
38
- "session/active_record_trickery",
39
- "session/brute_force_protection",
40
- "session/callbacks",
41
- "session/cookies",
42
- "session/existence",
43
- "session/foundation",
44
- "session/http_auth",
45
- "session/id",
46
- "session/klass",
47
- "session/magic_columns",
48
- "session/magic_states",
49
- "session/params",
50
- "session/password",
51
- "session/perishable_token",
52
- "session/persistence",
53
- "session/priority_record",
54
- "session/scopes",
55
- "session/session",
56
- "session/timeout",
57
- "session/unauthorized_record",
58
- "session/validation",
59
- "session/base"
16
+ "errors",
17
+ "i18n",
18
+ "random",
19
+ "config",
20
+
21
+ "controller_adapters/abstract_adapter",
22
+ "cookie_credentials",
23
+
24
+ "crypto_providers",
25
+
26
+ "acts_as_authentic/email",
27
+ "acts_as_authentic/logged_in_status",
28
+ "acts_as_authentic/login",
29
+ "acts_as_authentic/magic_columns",
30
+ "acts_as_authentic/password",
31
+ "acts_as_authentic/perishable_token",
32
+ "acts_as_authentic/persistence_token",
33
+ "acts_as_authentic/session_maintenance",
34
+ "acts_as_authentic/single_access_token",
35
+ "acts_as_authentic/base",
36
+
37
+ "session/magic_column/assigns_last_request_at",
38
+ "session/base"
60
39
  ].each do |library|
61
- require path + library
62
- end
40
+ require path + library
41
+ end
63
42
 
64
43
  require path + "controller_adapters/rails_adapter" if defined?(Rails)
65
44
  require path + "controller_adapters/sinatra_adapter" if defined?(Sinatra)