kschrader-authlogic 2.1.2

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 (120) hide show
  1. data/.gitignore +9 -0
  2. data/CHANGELOG.rdoc +346 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +245 -0
  5. data/Rakefile +49 -0
  6. data/VERSION.yml +4 -0
  7. data/authlogic.gemspec +205 -0
  8. data/generators/session/session_generator.rb +9 -0
  9. data/generators/session/templates/session.rb +2 -0
  10. data/init.rb +1 -0
  11. data/lib/authlogic.rb +55 -0
  12. data/lib/authlogic/acts_as_authentic/base.rb +112 -0
  13. data/lib/authlogic/acts_as_authentic/email.rb +110 -0
  14. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
  15. data/lib/authlogic/acts_as_authentic/login.rb +141 -0
  16. data/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
  17. data/lib/authlogic/acts_as_authentic/password.rb +344 -0
  18. data/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
  19. data/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
  20. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
  21. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
  22. data/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
  23. data/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
  24. data/lib/authlogic/authenticates_many/association.rb +42 -0
  25. data/lib/authlogic/authenticates_many/base.rb +55 -0
  26. data/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
  27. data/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
  28. data/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
  29. data/lib/authlogic/crypto_providers/aes256.rb +43 -0
  30. data/lib/authlogic/crypto_providers/bcrypt.rb +89 -0
  31. data/lib/authlogic/crypto_providers/md5.rb +34 -0
  32. data/lib/authlogic/crypto_providers/sha1.rb +35 -0
  33. data/lib/authlogic/crypto_providers/sha512.rb +50 -0
  34. data/lib/authlogic/i18n.rb +63 -0
  35. data/lib/authlogic/random.rb +33 -0
  36. data/lib/authlogic/regex.rb +25 -0
  37. data/lib/authlogic/session/activation.rb +58 -0
  38. data/lib/authlogic/session/active_record_trickery.rb +55 -0
  39. data/lib/authlogic/session/base.rb +37 -0
  40. data/lib/authlogic/session/brute_force_protection.rb +92 -0
  41. data/lib/authlogic/session/callbacks.rb +87 -0
  42. data/lib/authlogic/session/cookies.rb +130 -0
  43. data/lib/authlogic/session/existence.rb +93 -0
  44. data/lib/authlogic/session/foundation.rb +63 -0
  45. data/lib/authlogic/session/http_auth.rb +58 -0
  46. data/lib/authlogic/session/id.rb +41 -0
  47. data/lib/authlogic/session/klass.rb +75 -0
  48. data/lib/authlogic/session/magic_columns.rb +94 -0
  49. data/lib/authlogic/session/magic_states.rb +58 -0
  50. data/lib/authlogic/session/params.rb +100 -0
  51. data/lib/authlogic/session/password.rb +231 -0
  52. data/lib/authlogic/session/perishable_token.rb +18 -0
  53. data/lib/authlogic/session/persistence.rb +70 -0
  54. data/lib/authlogic/session/priority_record.rb +34 -0
  55. data/lib/authlogic/session/scopes.rb +101 -0
  56. data/lib/authlogic/session/session.rb +60 -0
  57. data/lib/authlogic/session/timeout.rb +82 -0
  58. data/lib/authlogic/session/unauthorized_record.rb +50 -0
  59. data/lib/authlogic/session/validation.rb +80 -0
  60. data/lib/authlogic/test_case.rb +114 -0
  61. data/lib/authlogic/test_case/mock_controller.rb +45 -0
  62. data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  63. data/lib/authlogic/test_case/mock_logger.rb +10 -0
  64. data/lib/authlogic/test_case/mock_request.rb +19 -0
  65. data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  66. data/rails/init.rb +1 -0
  67. data/shoulda_macros/authlogic.rb +13 -0
  68. data/test/acts_as_authentic_test/base_test.rb +18 -0
  69. data/test/acts_as_authentic_test/email_test.rb +97 -0
  70. data/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
  71. data/test/acts_as_authentic_test/login_test.rb +109 -0
  72. data/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
  73. data/test/acts_as_authentic_test/password_test.rb +236 -0
  74. data/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
  75. data/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
  76. data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  77. data/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
  78. data/test/acts_as_authentic_test/single_access_test.rb +44 -0
  79. data/test/authenticates_many_test.rb +16 -0
  80. data/test/crypto_provider_test/aes256_test.rb +14 -0
  81. data/test/crypto_provider_test/bcrypt_test.rb +14 -0
  82. data/test/crypto_provider_test/sha1_test.rb +23 -0
  83. data/test/crypto_provider_test/sha512_test.rb +14 -0
  84. data/test/fixtures/companies.yml +5 -0
  85. data/test/fixtures/employees.yml +17 -0
  86. data/test/fixtures/projects.yml +3 -0
  87. data/test/fixtures/users.yml +24 -0
  88. data/test/libs/affiliate.rb +7 -0
  89. data/test/libs/company.rb +6 -0
  90. data/test/libs/employee.rb +7 -0
  91. data/test/libs/employee_session.rb +2 -0
  92. data/test/libs/ldaper.rb +3 -0
  93. data/test/libs/ordered_hash.rb +9 -0
  94. data/test/libs/project.rb +3 -0
  95. data/test/libs/user.rb +5 -0
  96. data/test/libs/user_session.rb +2 -0
  97. data/test/random_test.rb +49 -0
  98. data/test/session_test/activation_test.rb +43 -0
  99. data/test/session_test/active_record_trickery_test.rb +27 -0
  100. data/test/session_test/brute_force_protection_test.rb +101 -0
  101. data/test/session_test/callbacks_test.rb +6 -0
  102. data/test/session_test/cookies_test.rb +107 -0
  103. data/test/session_test/credentials_test.rb +0 -0
  104. data/test/session_test/existence_test.rb +64 -0
  105. data/test/session_test/http_auth_test.rb +28 -0
  106. data/test/session_test/id_test.rb +17 -0
  107. data/test/session_test/klass_test.rb +35 -0
  108. data/test/session_test/magic_columns_test.rb +62 -0
  109. data/test/session_test/magic_states_test.rb +60 -0
  110. data/test/session_test/params_test.rb +53 -0
  111. data/test/session_test/password_test.rb +106 -0
  112. data/test/session_test/perishability_test.rb +15 -0
  113. data/test/session_test/persistence_test.rb +21 -0
  114. data/test/session_test/scopes_test.rb +60 -0
  115. data/test/session_test/session_test.rb +59 -0
  116. data/test/session_test/timeout_test.rb +52 -0
  117. data/test/session_test/unauthorized_record_test.rb +13 -0
  118. data/test/session_test/validation_test.rb +23 -0
  119. data/test/test_helper.rb +174 -0
  120. metadata +229 -0
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "authlogic"
8
+ gem.summary = "A clean, simple, and unobtrusive ruby authentication solution."
9
+ gem.email = "bjohnson@binarylogic.com"
10
+ gem.homepage = "http://github.com/binarylogic/authlogic"
11
+ gem.authors = ["Ben Johnson of Binary Logic"]
12
+ gem.rubyforge_project = "authlogic"
13
+ gem.add_dependency "activesupport"
14
+ end
15
+ rescue LoadError
16
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
17
+ end
18
+
19
+ require 'rake/testtask'
20
+ Rake::TestTask.new(:test) do |test|
21
+ test.libs << 'lib' << 'test'
22
+ test.pattern = 'test/**/*_test.rb'
23
+ test.verbose = true
24
+ end
25
+
26
+ begin
27
+ require 'rcov/rcovtask'
28
+ Rcov::RcovTask.new do |test|
29
+ test.libs << 'test'
30
+ test.pattern = 'test/**/*_test.rb'
31
+ test.verbose = true
32
+ end
33
+ rescue LoadError
34
+ task :rcov do
35
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
36
+ end
37
+ end
38
+
39
+ task :default => :test
40
+
41
+ begin
42
+ require 'rake/contrib/sshpublisher'
43
+ namespace :rubyforge do
44
+ desc "Release gem to RubyForge"
45
+ task :release => ["rubyforge:release:gem"]
46
+ end
47
+ rescue LoadError
48
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
49
+ end
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 1
3
+ :major: 2
4
+ :patch: 2
data/authlogic.gemspec ADDED
@@ -0,0 +1,205 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{authlogic}
5
+ s.version = "2.1.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Ben Johnson of Binary Logic"]
9
+ s.date = %q{2009-07-31}
10
+ s.email = %q{bjohnson@binarylogic.com}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".gitignore",
17
+ "CHANGELOG.rdoc",
18
+ "LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION.yml",
22
+ "authlogic.gemspec",
23
+ "generators/session/session_generator.rb",
24
+ "generators/session/templates/session.rb",
25
+ "init.rb",
26
+ "lib/authlogic.rb",
27
+ "lib/authlogic/acts_as_authentic/base.rb",
28
+ "lib/authlogic/acts_as_authentic/email.rb",
29
+ "lib/authlogic/acts_as_authentic/logged_in_status.rb",
30
+ "lib/authlogic/acts_as_authentic/login.rb",
31
+ "lib/authlogic/acts_as_authentic/magic_columns.rb",
32
+ "lib/authlogic/acts_as_authentic/password.rb",
33
+ "lib/authlogic/acts_as_authentic/perishable_token.rb",
34
+ "lib/authlogic/acts_as_authentic/persistence_token.rb",
35
+ "lib/authlogic/acts_as_authentic/restful_authentication.rb",
36
+ "lib/authlogic/acts_as_authentic/session_maintenance.rb",
37
+ "lib/authlogic/acts_as_authentic/single_access_token.rb",
38
+ "lib/authlogic/acts_as_authentic/validations_scope.rb",
39
+ "lib/authlogic/authenticates_many/association.rb",
40
+ "lib/authlogic/authenticates_many/base.rb",
41
+ "lib/authlogic/controller_adapters/abstract_adapter.rb",
42
+ "lib/authlogic/controller_adapters/merb_adapter.rb",
43
+ "lib/authlogic/controller_adapters/rails_adapter.rb",
44
+ "lib/authlogic/crypto_providers/aes256.rb",
45
+ "lib/authlogic/crypto_providers/bcrypt.rb",
46
+ "lib/authlogic/crypto_providers/md5.rb",
47
+ "lib/authlogic/crypto_providers/sha1.rb",
48
+ "lib/authlogic/crypto_providers/sha512.rb",
49
+ "lib/authlogic/i18n.rb",
50
+ "lib/authlogic/random.rb",
51
+ "lib/authlogic/regex.rb",
52
+ "lib/authlogic/session/activation.rb",
53
+ "lib/authlogic/session/active_record_trickery.rb",
54
+ "lib/authlogic/session/base.rb",
55
+ "lib/authlogic/session/brute_force_protection.rb",
56
+ "lib/authlogic/session/callbacks.rb",
57
+ "lib/authlogic/session/cookies.rb",
58
+ "lib/authlogic/session/existence.rb",
59
+ "lib/authlogic/session/foundation.rb",
60
+ "lib/authlogic/session/http_auth.rb",
61
+ "lib/authlogic/session/id.rb",
62
+ "lib/authlogic/session/klass.rb",
63
+ "lib/authlogic/session/magic_columns.rb",
64
+ "lib/authlogic/session/magic_states.rb",
65
+ "lib/authlogic/session/params.rb",
66
+ "lib/authlogic/session/password.rb",
67
+ "lib/authlogic/session/perishable_token.rb",
68
+ "lib/authlogic/session/persistence.rb",
69
+ "lib/authlogic/session/priority_record.rb",
70
+ "lib/authlogic/session/scopes.rb",
71
+ "lib/authlogic/session/session.rb",
72
+ "lib/authlogic/session/timeout.rb",
73
+ "lib/authlogic/session/unauthorized_record.rb",
74
+ "lib/authlogic/session/validation.rb",
75
+ "lib/authlogic/test_case.rb",
76
+ "lib/authlogic/test_case/mock_controller.rb",
77
+ "lib/authlogic/test_case/mock_cookie_jar.rb",
78
+ "lib/authlogic/test_case/mock_logger.rb",
79
+ "lib/authlogic/test_case/mock_request.rb",
80
+ "lib/authlogic/test_case/rails_request_adapter.rb",
81
+ "rails/init.rb",
82
+ "shoulda_macros/authlogic.rb",
83
+ "test/acts_as_authentic_test/base_test.rb",
84
+ "test/acts_as_authentic_test/email_test.rb",
85
+ "test/acts_as_authentic_test/logged_in_status_test.rb",
86
+ "test/acts_as_authentic_test/login_test.rb",
87
+ "test/acts_as_authentic_test/magic_columns_test.rb",
88
+ "test/acts_as_authentic_test/password_test.rb",
89
+ "test/acts_as_authentic_test/perishable_token_test.rb",
90
+ "test/acts_as_authentic_test/persistence_token_test.rb",
91
+ "test/acts_as_authentic_test/restful_authentication_test.rb",
92
+ "test/acts_as_authentic_test/session_maintenance_test.rb",
93
+ "test/acts_as_authentic_test/single_access_test.rb",
94
+ "test/authenticates_many_test.rb",
95
+ "test/crypto_provider_test/aes256_test.rb",
96
+ "test/crypto_provider_test/bcrypt_test.rb",
97
+ "test/crypto_provider_test/sha1_test.rb",
98
+ "test/crypto_provider_test/sha512_test.rb",
99
+ "test/fixtures/companies.yml",
100
+ "test/fixtures/employees.yml",
101
+ "test/fixtures/projects.yml",
102
+ "test/fixtures/users.yml",
103
+ "test/libs/affiliate.rb",
104
+ "test/libs/company.rb",
105
+ "test/libs/employee.rb",
106
+ "test/libs/employee_session.rb",
107
+ "test/libs/ldaper.rb",
108
+ "test/libs/ordered_hash.rb",
109
+ "test/libs/project.rb",
110
+ "test/libs/user.rb",
111
+ "test/libs/user_session.rb",
112
+ "test/random_test.rb",
113
+ "test/session_test/activation_test.rb",
114
+ "test/session_test/active_record_trickery_test.rb",
115
+ "test/session_test/brute_force_protection_test.rb",
116
+ "test/session_test/callbacks_test.rb",
117
+ "test/session_test/cookies_test.rb",
118
+ "test/session_test/credentials_test.rb",
119
+ "test/session_test/existence_test.rb",
120
+ "test/session_test/http_auth_test.rb",
121
+ "test/session_test/id_test.rb",
122
+ "test/session_test/klass_test.rb",
123
+ "test/session_test/magic_columns_test.rb",
124
+ "test/session_test/magic_states_test.rb",
125
+ "test/session_test/params_test.rb",
126
+ "test/session_test/password_test.rb",
127
+ "test/session_test/perishability_test.rb",
128
+ "test/session_test/persistence_test.rb",
129
+ "test/session_test/scopes_test.rb",
130
+ "test/session_test/session_test.rb",
131
+ "test/session_test/timeout_test.rb",
132
+ "test/session_test/unauthorized_record_test.rb",
133
+ "test/session_test/validation_test.rb",
134
+ "test/test_helper.rb"
135
+ ]
136
+ s.homepage = %q{http://github.com/binarylogic/authlogic}
137
+ s.rdoc_options = ["--charset=UTF-8"]
138
+ s.require_paths = ["lib"]
139
+ s.rubyforge_project = %q{authlogic}
140
+ s.rubygems_version = %q{1.3.3}
141
+ s.summary = %q{A clean, simple, and unobtrusive ruby authentication solution.}
142
+ s.test_files = [
143
+ "test/authenticates_many_test.rb",
144
+ "test/random_test.rb",
145
+ "test/test_helper.rb",
146
+ "test/acts_as_authentic_test/base_test.rb",
147
+ "test/acts_as_authentic_test/email_test.rb",
148
+ "test/acts_as_authentic_test/logged_in_status_test.rb",
149
+ "test/acts_as_authentic_test/login_test.rb",
150
+ "test/acts_as_authentic_test/magic_columns_test.rb",
151
+ "test/acts_as_authentic_test/password_test.rb",
152
+ "test/acts_as_authentic_test/perishable_token_test.rb",
153
+ "test/acts_as_authentic_test/persistence_token_test.rb",
154
+ "test/acts_as_authentic_test/restful_authentication_test.rb",
155
+ "test/acts_as_authentic_test/session_maintenance_test.rb",
156
+ "test/acts_as_authentic_test/single_access_test.rb",
157
+ "test/crypto_provider_test/aes256_test.rb",
158
+ "test/crypto_provider_test/bcrypt_test.rb",
159
+ "test/crypto_provider_test/sha1_test.rb",
160
+ "test/crypto_provider_test/sha512_test.rb",
161
+ "test/libs/affiliate.rb",
162
+ "test/libs/company.rb",
163
+ "test/libs/employee.rb",
164
+ "test/libs/employee_session.rb",
165
+ "test/libs/ldaper.rb",
166
+ "test/libs/ordered_hash.rb",
167
+ "test/libs/project.rb",
168
+ "test/libs/user.rb",
169
+ "test/libs/user_session.rb",
170
+ "test/session_test/activation_test.rb",
171
+ "test/session_test/active_record_trickery_test.rb",
172
+ "test/session_test/brute_force_protection_test.rb",
173
+ "test/session_test/callbacks_test.rb",
174
+ "test/session_test/cookies_test.rb",
175
+ "test/session_test/credentials_test.rb",
176
+ "test/session_test/existence_test.rb",
177
+ "test/session_test/http_auth_test.rb",
178
+ "test/session_test/id_test.rb",
179
+ "test/session_test/klass_test.rb",
180
+ "test/session_test/magic_columns_test.rb",
181
+ "test/session_test/magic_states_test.rb",
182
+ "test/session_test/params_test.rb",
183
+ "test/session_test/password_test.rb",
184
+ "test/session_test/perishability_test.rb",
185
+ "test/session_test/persistence_test.rb",
186
+ "test/session_test/scopes_test.rb",
187
+ "test/session_test/session_test.rb",
188
+ "test/session_test/timeout_test.rb",
189
+ "test/session_test/unauthorized_record_test.rb",
190
+ "test/session_test/validation_test.rb"
191
+ ]
192
+
193
+ if s.respond_to? :specification_version then
194
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
195
+ s.specification_version = 3
196
+
197
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
198
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
199
+ else
200
+ s.add_dependency(%q<activesupport>, [">= 0"])
201
+ end
202
+ else
203
+ s.add_dependency(%q<activesupport>, [">= 0"])
204
+ end
205
+ end
@@ -0,0 +1,9 @@
1
+ class SessionGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ m.class_collisions class_name
5
+ m.directory File.join('app/models', class_path)
6
+ m.template 'session.rb', File.join('app/models', class_path, "#{file_name}.rb")
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ class <%= class_name %> < Authlogic::Session::Base
2
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + "/rails/init.rb"
data/lib/authlogic.rb ADDED
@@ -0,0 +1,55 @@
1
+ require "active_support"
2
+
3
+ require File.dirname(__FILE__) + "/authlogic/i18n"
4
+ require File.dirname(__FILE__) + "/authlogic/random"
5
+ require File.dirname(__FILE__) + "/authlogic/regex"
6
+
7
+ require File.dirname(__FILE__) + "/authlogic/controller_adapters/abstract_adapter"
8
+ require File.dirname(__FILE__) + "/authlogic/controller_adapters/rails_adapter" if defined?(Rails)
9
+ require File.dirname(__FILE__) + "/authlogic/controller_adapters/merb_adapter" if defined?(Merb)
10
+
11
+ require File.dirname(__FILE__) + "/authlogic/crypto_providers/md5"
12
+ require File.dirname(__FILE__) + "/authlogic/crypto_providers/sha1"
13
+ require File.dirname(__FILE__) + "/authlogic/crypto_providers/sha512"
14
+ require File.dirname(__FILE__) + "/authlogic/crypto_providers/bcrypt"
15
+ require File.dirname(__FILE__) + "/authlogic/crypto_providers/aes256"
16
+
17
+ require File.dirname(__FILE__) + "/authlogic/authenticates_many/base"
18
+ require File.dirname(__FILE__) + "/authlogic/authenticates_many/association"
19
+
20
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/email"
21
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/logged_in_status"
22
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/login"
23
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/magic_columns"
24
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/password"
25
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/perishable_token"
26
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/persistence_token"
27
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/restful_authentication"
28
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/session_maintenance"
29
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/single_access_token"
30
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/validations_scope"
31
+ require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/base"
32
+
33
+ require File.dirname(__FILE__) + "/authlogic/session/activation"
34
+ require File.dirname(__FILE__) + "/authlogic/session/active_record_trickery"
35
+ require File.dirname(__FILE__) + "/authlogic/session/brute_force_protection"
36
+ require File.dirname(__FILE__) + "/authlogic/session/callbacks"
37
+ require File.dirname(__FILE__) + "/authlogic/session/cookies"
38
+ require File.dirname(__FILE__) + "/authlogic/session/existence"
39
+ require File.dirname(__FILE__) + "/authlogic/session/foundation"
40
+ require File.dirname(__FILE__) + "/authlogic/session/http_auth"
41
+ require File.dirname(__FILE__) + "/authlogic/session/id"
42
+ require File.dirname(__FILE__) + "/authlogic/session/klass"
43
+ require File.dirname(__FILE__) + "/authlogic/session/magic_columns"
44
+ require File.dirname(__FILE__) + "/authlogic/session/magic_states"
45
+ require File.dirname(__FILE__) + "/authlogic/session/params"
46
+ require File.dirname(__FILE__) + "/authlogic/session/password"
47
+ require File.dirname(__FILE__) + "/authlogic/session/perishable_token"
48
+ require File.dirname(__FILE__) + "/authlogic/session/persistence"
49
+ require File.dirname(__FILE__) + "/authlogic/session/priority_record"
50
+ require File.dirname(__FILE__) + "/authlogic/session/scopes"
51
+ require File.dirname(__FILE__) + "/authlogic/session/session"
52
+ require File.dirname(__FILE__) + "/authlogic/session/timeout"
53
+ require File.dirname(__FILE__) + "/authlogic/session/unauthorized_record"
54
+ require File.dirname(__FILE__) + "/authlogic/session/validation"
55
+ require File.dirname(__FILE__) + "/authlogic/session/base"
@@ -0,0 +1,112 @@
1
+ module Authlogic
2
+ module ActsAsAuthentic
3
+ # Provides the base functionality for acts_as_authentic
4
+ module Base
5
+ def self.included(klass)
6
+ klass.class_eval do
7
+ extend Config
8
+ end
9
+ end
10
+
11
+ module Config
12
+ # This includes a lot of helpful methods for authenticating records which The Authlogic::Session module relies on.
13
+ # To use it just do:
14
+ #
15
+ # class User < ActiveRecord::Base
16
+ # acts_as_authentic
17
+ # end
18
+ #
19
+ # Configuration is easy:
20
+ #
21
+ # acts_as_authentic do |c|
22
+ # c.my_configuration_option = my_value
23
+ # end
24
+ #
25
+ # See the various sub modules for the configuration they provide.
26
+ def acts_as_authentic(unsupported_options = nil, &block)
27
+ # Stop all configuration if the DB is not set up
28
+ return if !db_setup?
29
+
30
+ raise ArgumentError.new("You are using the old v1.X.X configuration method for Authlogic. Instead of " +
31
+ "passing a hash of configuration options to acts_as_authentic, pass a block: acts_as_authentic { |c| c.my_option = my_value }") if !unsupported_options.nil?
32
+
33
+ yield self if block_given?
34
+ acts_as_authentic_modules.each { |mod| include mod }
35
+ end
36
+
37
+ # Since this part of Authlogic deals with another class, ActiveRecord, we can't just start including things
38
+ # in ActiveRecord itself. A lot of these module includes need to be triggered by the acts_as_authentic method
39
+ # call. For example, you don't want to start adding in email validations and what not into a model that has
40
+ # nothing to do with Authlogic.
41
+ #
42
+ # That being said, this is your tool for extending Authlogic and "hooking" into the acts_as_authentic call.
43
+ def add_acts_as_authentic_module(mod, action = :append)
44
+ modules = acts_as_authentic_modules
45
+ case action
46
+ when :append
47
+ modules << mod
48
+ when :prepend
49
+ modules = [mod] + modules
50
+ end
51
+ modules.uniq!
52
+ write_inheritable_attribute(:acts_as_authentic_modules, modules)
53
+ end
54
+
55
+ # This is the same as add_acts_as_authentic_module, except that it removes the module from the list.
56
+ def remove_acts_as_authentic_module(mod)
57
+ acts_as_authentic_modules.delete(mod)
58
+ acts_as_authentic_modules
59
+ end
60
+
61
+ private
62
+ def acts_as_authentic_modules
63
+ key = :acts_as_authentic_modules
64
+ inheritable_attributes.include?(key) ? read_inheritable_attribute(key) : []
65
+ end
66
+
67
+ def db_setup?
68
+ begin
69
+ column_names
70
+ true
71
+ rescue Exception
72
+ false
73
+ end
74
+ end
75
+
76
+ def rw_config(key, value, default_value = nil, read_value = nil)
77
+ if value == read_value
78
+ inheritable_attributes.include?(key) ? read_inheritable_attribute(key) : default_value
79
+ else
80
+ write_inheritable_attribute(key, value)
81
+ end
82
+ end
83
+
84
+ def first_column_to_exist(*columns_to_check)
85
+ if db_setup?
86
+ columns_to_check.each { |column_name| return column_name.to_sym if column_names.include?(column_name.to_s) }
87
+ end
88
+ columns_to_check.first && columns_to_check.first.to_sym
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ if defined?(::ActiveRecord)
96
+ module ::ActiveRecord
97
+ class Base
98
+ include Authlogic::ActsAsAuthentic::Base
99
+ include Authlogic::ActsAsAuthentic::Email
100
+ include Authlogic::ActsAsAuthentic::LoggedInStatus
101
+ include Authlogic::ActsAsAuthentic::Login
102
+ include Authlogic::ActsAsAuthentic::MagicColumns
103
+ include Authlogic::ActsAsAuthentic::Password
104
+ include Authlogic::ActsAsAuthentic::PerishableToken
105
+ include Authlogic::ActsAsAuthentic::PersistenceToken
106
+ include Authlogic::ActsAsAuthentic::RestfulAuthentication
107
+ include Authlogic::ActsAsAuthentic::SessionMaintenance
108
+ include Authlogic::ActsAsAuthentic::SingleAccessToken
109
+ include Authlogic::ActsAsAuthentic::ValidationsScope
110
+ end
111
+ end
112
+ end