authlogic 4.5.0 → 5.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 (146) hide show
  1. checksums.yaml +5 -5
  2. data/lib/authlogic.rb +3 -28
  3. data/lib/authlogic/acts_as_authentic/base.rb +3 -18
  4. data/lib/authlogic/acts_as_authentic/email.rb +3 -170
  5. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +3 -1
  6. data/lib/authlogic/acts_as_authentic/login.rb +7 -174
  7. data/lib/authlogic/acts_as_authentic/magic_columns.rb +7 -4
  8. data/lib/authlogic/acts_as_authentic/password.rb +54 -253
  9. data/lib/authlogic/acts_as_authentic/perishable_token.rb +7 -5
  10. data/lib/authlogic/acts_as_authentic/persistence_token.rb +9 -4
  11. data/lib/authlogic/acts_as_authentic/queries/case_sensitivity.rb +53 -0
  12. data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +17 -22
  13. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +8 -6
  14. data/lib/authlogic/acts_as_authentic/single_access_token.rb +9 -8
  15. data/lib/authlogic/config.rb +9 -1
  16. data/lib/authlogic/controller_adapters/abstract_adapter.rb +7 -4
  17. data/lib/authlogic/controller_adapters/rack_adapter.rb +2 -0
  18. data/lib/authlogic/controller_adapters/rails_adapter.rb +17 -14
  19. data/lib/authlogic/controller_adapters/sinatra_adapter.rb +6 -0
  20. data/lib/authlogic/crypto_providers.rb +5 -20
  21. data/lib/authlogic/crypto_providers/bcrypt.rb +3 -3
  22. data/lib/authlogic/crypto_providers/md5.rb +3 -6
  23. data/lib/authlogic/crypto_providers/scrypt.rb +2 -0
  24. data/lib/authlogic/crypto_providers/sha1.rb +4 -6
  25. data/lib/authlogic/crypto_providers/sha256.rb +2 -0
  26. data/lib/authlogic/crypto_providers/sha512.rb +6 -5
  27. data/lib/authlogic/i18n.rb +3 -1
  28. data/lib/authlogic/i18n/translator.rb +3 -0
  29. data/lib/authlogic/random.rb +2 -0
  30. data/lib/authlogic/session/base.rb +2089 -39
  31. data/lib/authlogic/session/magic_column/assigns_last_request_at.rb +46 -0
  32. data/lib/authlogic/test_case.rb +4 -0
  33. data/lib/authlogic/test_case/mock_controller.rb +2 -0
  34. data/lib/authlogic/test_case/mock_cookie_jar.rb +7 -35
  35. data/lib/authlogic/test_case/mock_logger.rb +2 -0
  36. data/lib/authlogic/test_case/mock_request.rb +2 -0
  37. data/lib/authlogic/test_case/rails_request_adapter.rb +2 -0
  38. data/lib/authlogic/version.rb +2 -1
  39. metadata +38 -181
  40. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -28
  41. data/.github/ISSUE_TEMPLATE/feature_proposal.md +0 -32
  42. data/.github/triage.md +0 -86
  43. data/.gitignore +0 -15
  44. data/.rubocop.yml +0 -133
  45. data/.rubocop_todo.yml +0 -74
  46. data/.travis.yml +0 -24
  47. data/CHANGELOG.md +0 -348
  48. data/CONTRIBUTING.md +0 -91
  49. data/Gemfile +0 -6
  50. data/LICENSE +0 -20
  51. data/README.md +0 -448
  52. data/Rakefile +0 -21
  53. data/UPGRADING.md +0 -22
  54. data/authlogic.gemspec +0 -40
  55. data/doc/use_normal_rails_validation.md +0 -82
  56. data/gemfiles/Gemfile.rails-4.2.x +0 -6
  57. data/gemfiles/Gemfile.rails-5.1.x +0 -6
  58. data/gemfiles/Gemfile.rails-5.2.x +0 -6
  59. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +0 -106
  60. data/lib/authlogic/acts_as_authentic/validations_scope.rb +0 -35
  61. data/lib/authlogic/authenticates_many/association.rb +0 -50
  62. data/lib/authlogic/authenticates_many/base.rb +0 -81
  63. data/lib/authlogic/crypto_providers/aes256.rb +0 -71
  64. data/lib/authlogic/crypto_providers/wordpress.rb +0 -72
  65. data/lib/authlogic/regex.rb +0 -79
  66. data/lib/authlogic/session/activation.rb +0 -73
  67. data/lib/authlogic/session/active_record_trickery.rb +0 -65
  68. data/lib/authlogic/session/brute_force_protection.rb +0 -127
  69. data/lib/authlogic/session/callbacks.rb +0 -153
  70. data/lib/authlogic/session/cookies.rb +0 -329
  71. data/lib/authlogic/session/existence.rb +0 -103
  72. data/lib/authlogic/session/foundation.rb +0 -105
  73. data/lib/authlogic/session/http_auth.rb +0 -107
  74. data/lib/authlogic/session/id.rb +0 -53
  75. data/lib/authlogic/session/klass.rb +0 -73
  76. data/lib/authlogic/session/magic_columns.rb +0 -119
  77. data/lib/authlogic/session/magic_states.rb +0 -82
  78. data/lib/authlogic/session/params.rb +0 -130
  79. data/lib/authlogic/session/password.rb +0 -318
  80. data/lib/authlogic/session/perishable_token.rb +0 -24
  81. data/lib/authlogic/session/persistence.rb +0 -77
  82. data/lib/authlogic/session/priority_record.rb +0 -38
  83. data/lib/authlogic/session/scopes.rb +0 -138
  84. data/lib/authlogic/session/session.rb +0 -77
  85. data/lib/authlogic/session/timeout.rb +0 -103
  86. data/lib/authlogic/session/unauthorized_record.rb +0 -56
  87. data/lib/authlogic/session/validation.rb +0 -93
  88. data/test/acts_as_authentic_test/base_test.rb +0 -27
  89. data/test/acts_as_authentic_test/email_test.rb +0 -241
  90. data/test/acts_as_authentic_test/logged_in_status_test.rb +0 -64
  91. data/test/acts_as_authentic_test/login_test.rb +0 -153
  92. data/test/acts_as_authentic_test/magic_columns_test.rb +0 -29
  93. data/test/acts_as_authentic_test/password_test.rb +0 -263
  94. data/test/acts_as_authentic_test/perishable_token_test.rb +0 -98
  95. data/test/acts_as_authentic_test/persistence_token_test.rb +0 -62
  96. data/test/acts_as_authentic_test/restful_authentication_test.rb +0 -48
  97. data/test/acts_as_authentic_test/session_maintenance_test.rb +0 -150
  98. data/test/acts_as_authentic_test/single_access_test.rb +0 -46
  99. data/test/adapter_test.rb +0 -23
  100. data/test/authenticates_many_test.rb +0 -33
  101. data/test/config_test.rb +0 -38
  102. data/test/crypto_provider_test/aes256_test.rb +0 -16
  103. data/test/crypto_provider_test/bcrypt_test.rb +0 -16
  104. data/test/crypto_provider_test/scrypt_test.rb +0 -16
  105. data/test/crypto_provider_test/sha1_test.rb +0 -25
  106. data/test/crypto_provider_test/sha256_test.rb +0 -16
  107. data/test/crypto_provider_test/sha512_test.rb +0 -16
  108. data/test/crypto_provider_test/wordpress_test.rb +0 -26
  109. data/test/fixtures/companies.yml +0 -5
  110. data/test/fixtures/employees.yml +0 -17
  111. data/test/fixtures/projects.yml +0 -3
  112. data/test/fixtures/users.yml +0 -41
  113. data/test/i18n/lol.yml +0 -4
  114. data/test/i18n_test.rb +0 -35
  115. data/test/libs/affiliate.rb +0 -9
  116. data/test/libs/company.rb +0 -8
  117. data/test/libs/employee.rb +0 -9
  118. data/test/libs/employee_session.rb +0 -4
  119. data/test/libs/ldaper.rb +0 -5
  120. data/test/libs/project.rb +0 -5
  121. data/test/libs/user.rb +0 -9
  122. data/test/libs/user_session.rb +0 -27
  123. data/test/random_test.rb +0 -15
  124. data/test/session_test/activation_test.rb +0 -45
  125. data/test/session_test/active_record_trickery_test.rb +0 -78
  126. data/test/session_test/brute_force_protection_test.rb +0 -110
  127. data/test/session_test/callbacks_test.rb +0 -42
  128. data/test/session_test/cookies_test.rb +0 -244
  129. data/test/session_test/credentials_test.rb +0 -0
  130. data/test/session_test/existence_test.rb +0 -88
  131. data/test/session_test/foundation_test.rb +0 -24
  132. data/test/session_test/http_auth_test.rb +0 -60
  133. data/test/session_test/id_test.rb +0 -19
  134. data/test/session_test/klass_test.rb +0 -42
  135. data/test/session_test/magic_columns_test.rb +0 -62
  136. data/test/session_test/magic_states_test.rb +0 -60
  137. data/test/session_test/params_test.rb +0 -61
  138. data/test/session_test/password_test.rb +0 -107
  139. data/test/session_test/perishability_test.rb +0 -17
  140. data/test/session_test/persistence_test.rb +0 -35
  141. data/test/session_test/scopes_test.rb +0 -68
  142. data/test/session_test/session_test.rb +0 -80
  143. data/test/session_test/timeout_test.rb +0 -84
  144. data/test/session_test/unauthorized_record_test.rb +0 -15
  145. data/test/session_test/validation_test.rb +0 -25
  146. data/test/test_helper.rb +0 -272
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ActsAsAuthentic
3
5
  # This provides a handy token that is "perishable", meaning the token is
@@ -33,7 +35,7 @@ module Authlogic
33
35
  10.minutes.to_i
34
36
  )
35
37
  end
36
- alias_method :perishable_token_valid_for=, :perishable_token_valid_for
38
+ alias perishable_token_valid_for= perishable_token_valid_for
37
39
 
38
40
  # Authlogic tries to expire and change the perishable token as much as
39
41
  # possible, without compromising its purpose. If you want to manage it
@@ -44,7 +46,7 @@ module Authlogic
44
46
  def disable_perishable_token_maintenance(value = nil)
45
47
  rw_config(:disable_perishable_token_maintenance, value, false)
46
48
  end
47
- alias_method :disable_perishable_token_maintenance=, :disable_perishable_token_maintenance
49
+ alias disable_perishable_token_maintenance= disable_perishable_token_maintenance
48
50
  end
49
51
 
50
52
  # All methods relating to the perishable token.
@@ -56,12 +58,12 @@ module Authlogic
56
58
  extend ClassMethods
57
59
  include InstanceMethods
58
60
 
59
- validates_uniqueness_of :perishable_token, if: :perishable_token_changed?
61
+ validates_uniqueness_of :perishable_token, if: :will_save_change_to_perishable_token?
60
62
  before_save :reset_perishable_token, unless: :disable_perishable_token_maintenance?
61
63
  end
62
64
  end
63
65
 
64
- # Class methods for the perishable token
66
+ # :nodoc:
65
67
  module ClassMethods
66
68
  # Use this method to find a record with a perishable token. This
67
69
  # method does 2 things for you:
@@ -94,7 +96,7 @@ module Authlogic
94
96
  end
95
97
  end
96
98
 
97
- # Instance level methods for the perishable token.
99
+ # :nodoc:
98
100
  module InstanceMethods
99
101
  # Resets the perishable token to a random friendly token.
100
102
  def reset_perishable_token
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ActsAsAuthentic
3
5
  # Maintains the persistence token, the token responsible for persisting sessions. This token
@@ -16,19 +18,22 @@ module Authlogic
16
18
  extend ClassMethods
17
19
  include InstanceMethods
18
20
 
21
+ # If the table does not have a password column, then
22
+ # `after_password_set` etc. will not be defined. See
23
+ # `Authlogic::ActsAsAuthentic::Password::Callbacks.included`
19
24
  if respond_to?(:after_password_set) && respond_to?(:after_password_verification)
20
25
  after_password_set :reset_persistence_token
21
26
  after_password_verification :reset_persistence_token!, if: :reset_persistence_token?
22
27
  end
23
28
 
24
29
  validates_presence_of :persistence_token
25
- validates_uniqueness_of :persistence_token, if: :persistence_token_changed?
30
+ validates_uniqueness_of :persistence_token, if: :will_save_change_to_persistence_token?
26
31
 
27
32
  before_validation :reset_persistence_token, if: :reset_persistence_token?
28
33
  end
29
34
  end
30
35
 
31
- # Class level methods for the persistence token.
36
+ # :nodoc:
32
37
  module ClassMethods
33
38
  # Resets ALL persistence tokens in the database, which will require
34
39
  # all users to re-authenticate.
@@ -38,7 +43,7 @@ module Authlogic
38
43
  end
39
44
  end
40
45
 
41
- # Instance level methods for the persistence token.
46
+ # :nodoc:
42
47
  module InstanceMethods
43
48
  # Resets the persistence_token field to a random hex value.
44
49
  def reset_persistence_token
@@ -50,7 +55,7 @@ module Authlogic
50
55
  reset_persistence_token
51
56
  save_without_session_maintenance(validate: false)
52
57
  end
53
- alias_method :forget!, :reset_persistence_token!
58
+ alias forget! reset_persistence_token!
54
59
 
55
60
  private
56
61
 
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Authlogic
4
+ module ActsAsAuthentic
5
+ module Queries
6
+ # @api private
7
+ class CaseSensitivity
8
+ E_UNABLE_TO_DETERMINE_SENSITIVITY = <<~EOS
9
+ Authlogic was unable to determine what case-sensitivity to use when
10
+ searching for email/login. To specify a sensitivity, validate the
11
+ uniqueness of the email/login and use the `case_sensitive` option,
12
+ like this:
13
+
14
+ validates :email, uniqueness: { case_sensitive: false }
15
+
16
+ Authlogic will now perform a case-insensitive query.
17
+ EOS
18
+
19
+ # @api private
20
+ def initialize(model_class, attribute)
21
+ @model_class = model_class
22
+ @attribute = attribute.to_sym
23
+ end
24
+
25
+ # @api private
26
+ def sensitive?
27
+ sensitive = uniqueness_validator_options[:case_sensitive]
28
+ if sensitive.nil?
29
+ ::Kernel.warn(E_UNABLE_TO_DETERMINE_SENSITIVITY)
30
+ false
31
+ else
32
+ sensitive
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ # @api private
39
+ def uniqueness_validator
40
+ @model_class.validators.select { |v|
41
+ v.is_a?(::ActiveRecord::Validations::UniquenessValidator) &&
42
+ v.attributes == [@attribute]
43
+ }.first
44
+ end
45
+
46
+ # @api private
47
+ def uniqueness_validator_options
48
+ uniqueness_validator&.options || {}
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -9,7 +9,7 @@ module Authlogic
9
9
  # Dup ActiveRecord.gem_version before freezing, in case someone
10
10
  # else wants to modify it. Freezing modifies an object in place.
11
11
  # https://github.com/binarylogic/authlogic/pull/590
12
- AR_GEM_VERSION = ActiveRecord.gem_version.dup.freeze
12
+ AR_GEM_VERSION = ::ActiveRecord.gem_version.dup.freeze
13
13
 
14
14
  # @api private
15
15
  def initialize(model_class, field, value, sensitive)
@@ -21,35 +21,30 @@ module Authlogic
21
21
 
22
22
  # @api private
23
23
  def execute
24
- bind(relation).first
24
+ @model_class.where(comparison).first
25
25
  end
26
26
 
27
27
  private
28
28
 
29
29
  # @api private
30
- def bind(relation)
31
- if AR_GEM_VERSION >= Gem::Version.new("5")
32
- bind = ActiveRecord::Relation::QueryAttribute.new(
33
- @field,
34
- @value,
35
- ActiveRecord::Type::Value.new
36
- )
37
- @model_class.where(relation, bind)
38
- else
39
- @model_class.where(relation)
40
- end
30
+ # @return Arel::Nodes::Equality
31
+ def comparison
32
+ @sensitive ? sensitive_comparison : insensitive_comparison
41
33
  end
42
34
 
43
35
  # @api private
44
- def relation
45
- if !@sensitive
46
- @model_class.connection.case_insensitive_comparison(
47
- @model_class.arel_table,
48
- @field,
49
- @model_class.columns_hash[@field],
50
- @value
51
- )
52
- elsif AR_GEM_VERSION >= Gem::Version.new("5.0")
36
+ def insensitive_comparison
37
+ @model_class.connection.case_insensitive_comparison(
38
+ @model_class.arel_table,
39
+ @field,
40
+ @model_class.columns_hash[@field],
41
+ @value
42
+ )
43
+ end
44
+
45
+ # @api private
46
+ def sensitive_comparison
47
+ if AR_GEM_VERSION >= Gem::Version.new("5.0")
53
48
  @model_class.connection.case_sensitive_comparison(
54
49
  @model_class.arel_table,
55
50
  @field,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ActsAsAuthentic
3
5
  # This is one of my favorite features that I think is pretty cool. It's
@@ -40,7 +42,7 @@ module Authlogic
40
42
  def log_in_after_create(value = nil)
41
43
  rw_config(:log_in_after_create, value, true)
42
44
  end
43
- alias_method :log_in_after_create=, :log_in_after_create
45
+ alias log_in_after_create= log_in_after_create
44
46
 
45
47
  # In order to turn off automatic maintenance of sessions when updating
46
48
  # the password, just set this to false.
@@ -50,7 +52,7 @@ module Authlogic
50
52
  def log_in_after_password_change(value = nil)
51
53
  rw_config(:log_in_after_password_change, value, true)
52
54
  end
53
- alias_method :log_in_after_password_change=, :log_in_after_password_change
55
+ alias log_in_after_password_change= log_in_after_password_change
54
56
 
55
57
  # As you may know, authlogic sessions can be separate by id (See
56
58
  # Authlogic::Session::Base#id). You can specify here what session ids
@@ -62,7 +64,7 @@ module Authlogic
62
64
  def session_ids(value = nil)
63
65
  rw_config(:session_ids, value, [nil])
64
66
  end
65
- alias_method :session_ids=, :session_ids
67
+ alias session_ids= session_ids
66
68
 
67
69
  # The name of the associated session class. This is inferred by the name
68
70
  # of the model.
@@ -77,7 +79,7 @@ module Authlogic
77
79
  end
78
80
  rw_config(:session_class, value, const)
79
81
  end
80
- alias_method :session_class=, :session_class
82
+ alias session_class= session_class
81
83
  end
82
84
 
83
85
  # This module, as one of the `acts_as_authentic_modules`, is only included
@@ -114,7 +116,7 @@ module Authlogic
114
116
  session_class.activated? &&
115
117
  maintain_session? &&
116
118
  !session_ids.blank? &&
117
- persistence_token_changed?
119
+ will_save_change_to_persistence_token?
118
120
  end
119
121
 
120
122
  def maintain_session?
@@ -174,7 +176,7 @@ module Authlogic
174
176
  end
175
177
 
176
178
  def log_in_after_password_change?
177
- persistence_token_changed? && self.class.log_in_after_password_change
179
+ will_save_change_to_persistence_token? && self.class.log_in_after_password_change
178
180
  end
179
181
  end
180
182
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ActsAsAuthentic
3
- # This module is responsible for maintaining the single_access token. For more
4
- # information the single access token and how to use it, see the
5
- # Authlogic::Session::Params module.
5
+ # This module is responsible for maintaining the single_access token. For
6
+ # more information the single access token and how to use it, see "Params"
7
+ # in `Session::Base`.
6
8
  module SingleAccessToken
7
9
  def self.included(klass)
8
10
  klass.class_eval do
@@ -25,10 +27,7 @@ module Authlogic
25
27
  def change_single_access_token_with_password(value = nil)
26
28
  rw_config(:change_single_access_token_with_password, value, false)
27
29
  end
28
- alias_method(
29
- :change_single_access_token_with_password=,
30
- :change_single_access_token_with_password
31
- )
30
+ alias change_single_access_token_with_password= change_single_access_token_with_password
32
31
  end
33
32
 
34
33
  # All method, for the single_access token aspect of acts_as_authentic.
@@ -41,7 +40,9 @@ module Authlogic
41
40
 
42
41
  klass.class_eval do
43
42
  include InstanceMethods
44
- validates_uniqueness_of :single_access_token, if: :single_access_token_changed?
43
+ validates_uniqueness_of :single_access_token,
44
+ if: :will_save_change_to_single_access_token?
45
+
45
46
  before_validation :reset_single_access_token, if: :reset_single_access_token?
46
47
  if respond_to?(:after_password_set)
47
48
  after_password_set(
@@ -1,6 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
4
+ # Mixed into `Authlogic::ActsAsAuthentic::Base` and
5
+ # `Authlogic::Session::Base`.
2
6
  module Config
3
- E_USE_NORMAL_RAILS_VALIDATION = <<~EOS.freeze
7
+ E_USE_NORMAL_RAILS_VALIDATION = <<~EOS
4
8
  This Authlogic configuration option (%s) is deprecated. Use normal
5
9
  ActiveRecord validation instead. Detailed instructions:
6
10
  https://github.com/binarylogic/authlogic/blob/master/doc/use_normal_rails_validation.md
@@ -8,6 +12,10 @@ module Authlogic
8
12
 
9
13
  def self.extended(klass)
10
14
  klass.class_eval do
15
+ # TODO: Is this a confusing name, given this module is mixed into
16
+ # both `Authlogic::ActsAsAuthentic::Base` and
17
+ # `Authlogic::Session::Base`? Perhaps a more generic name, like
18
+ # `authlogic_config` would be better?
11
19
  class_attribute :acts_as_authentic_config
12
20
  self.acts_as_authentic_config ||= {}
13
21
  end
@@ -1,10 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ControllerAdapters # :nodoc:
3
- # Allows you to use Authlogic in any framework you want, not just rails. See the RailsAdapter
4
- # for an example of how to adapt Authlogic to work with your framework.
5
+ # Allows you to use Authlogic in any framework you want, not just rails. See
6
+ # the RailsAdapter for an example of how to adapt Authlogic to work with
7
+ # your framework.
5
8
  class AbstractAdapter
6
9
  E_COOKIE_DOMAIN_ADAPTER = "The cookie_domain method has not been " \
7
- "implemented by the controller adapter".freeze
10
+ "implemented by the controller adapter"
8
11
 
9
12
  attr_accessor :controller
10
13
 
@@ -26,7 +29,7 @@ module Authlogic
26
29
  end
27
30
 
28
31
  def cookie_domain
29
- raise NotImplementedError.new(E_COOKIE_DOMAIN_ADAPTER)
32
+ raise NotImplementedError, E_COOKIE_DOMAIN_ADAPTER
30
33
  end
31
34
 
32
35
  def params
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Authlogic
2
4
  module ControllerAdapters
3
5
  # Adapter for authlogic to make it function as a Rack middleware.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "action_controller"
2
4
 
3
5
  module Authlogic
@@ -7,7 +9,19 @@ module Authlogic
7
9
  # Similar to how ActiveRecord has an adapter for MySQL, PostgreSQL, SQLite,
8
10
  # etc.
9
11
  class RailsAdapter < AbstractAdapter
10
- class AuthlogicLoadedTooLateError < StandardError; end
12
+ # :nodoc:
13
+ class AuthlogicLoadedTooLateError < StandardError
14
+ def message
15
+ <<~EOS.squish
16
+ Authlogic is trying to add a callback to ActionController::Base but
17
+ ApplicationController has already been loaded, so the callback won't
18
+ be copied into your application. Generally this is due to another
19
+ gem or plugin requiring your ApplicationController prematurely, such
20
+ as the resource_controller plugin. Please require Authlogic first,
21
+ before these other gems / plugins.
22
+ EOS
23
+ end
24
+ end
11
25
 
12
26
  def authenticate_with_http_basic(&block)
13
27
  controller.authenticate_with_http_basic(&block)
@@ -20,8 +34,7 @@ module Authlogic
20
34
  end
21
35
 
22
36
  def cookie_domain
23
- @cookie_domain_key ||= Rails::VERSION::STRING >= "2.3" ? :domain : :session_domain
24
- controller.request.session_options[@cookie_domain_key]
37
+ controller.request.session_options[:domain]
25
38
  end
26
39
 
27
40
  def request_content_type
@@ -33,17 +46,7 @@ module Authlogic
33
46
  module RailsImplementation
34
47
  def self.included(klass) # :nodoc:
35
48
  if defined?(::ApplicationController)
36
- raise AuthlogicLoadedTooLateError.new(
37
- <<~EOS.squish
38
- Authlogic is trying to add a callback to ActionController::Base
39
- but ApplicationController has already been loaded, so the
40
- callback won't be copied into your application. Generally this
41
- is due to another gem or plugin requiring your
42
- ApplicationController prematurely, such as the
43
- resource_controller plugin. Please require Authlogic first,
44
- before these other gems / plugins.
45
- EOS
46
- )
49
+ raise AuthlogicLoadedTooLateError
47
50
  end
48
51
 
49
52
  # In Rails 4.0.2, the *_filter methods were renamed to *_action.
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Authlogic bridge for Sinatra
2
4
  module Authlogic
3
5
  module ControllerAdapters
4
6
  module SinatraAdapter
7
+ # Cookie management functions
5
8
  class Cookies
6
9
  attr_reader :request, :response
7
10
 
@@ -23,6 +26,7 @@ module Authlogic
23
26
  end
24
27
  end
25
28
 
29
+ # Thin wrapper around request and response.
26
30
  class Controller
27
31
  attr_reader :request, :response, :cookies
28
32
 
@@ -40,11 +44,13 @@ module Authlogic
40
44
  end
41
45
  end
42
46
 
47
+ # Sinatra controller adapter
43
48
  class Adapter < AbstractAdapter
44
49
  def cookie_domain
45
50
  env["SERVER_NAME"]
46
51
  end
47
52
 
53
+ # Mixed into `Sinatra::Base`
48
54
  module Implementation
49
55
  def self.included(klass)
50
56
  klass.send :before do