railsware-authlogic 2.1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/.gitignore +9 -0
  2. data/CHANGELOG.rdoc +345 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +246 -0
  5. data/Rakefile +41 -0
  6. data/VERSION.yml +5 -0
  7. data/authlogic.gemspec +216 -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 +64 -0
  12. data/lib/authlogic/acts_as_authentic/base.rb +107 -0
  13. data/lib/authlogic/acts_as_authentic/email.rb +110 -0
  14. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +65 -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 +355 -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/controller_adapters/sinatra_adapter.rb +61 -0
  30. data/lib/authlogic/crypto_providers/aes256.rb +43 -0
  31. data/lib/authlogic/crypto_providers/bcrypt.rb +90 -0
  32. data/lib/authlogic/crypto_providers/md5.rb +34 -0
  33. data/lib/authlogic/crypto_providers/sha1.rb +35 -0
  34. data/lib/authlogic/crypto_providers/sha256.rb +50 -0
  35. data/lib/authlogic/crypto_providers/sha512.rb +50 -0
  36. data/lib/authlogic/crypto_providers/wordpress.rb +43 -0
  37. data/lib/authlogic/i18n.rb +83 -0
  38. data/lib/authlogic/i18n/translator.rb +15 -0
  39. data/lib/authlogic/random.rb +33 -0
  40. data/lib/authlogic/regex.rb +25 -0
  41. data/lib/authlogic/session/activation.rb +58 -0
  42. data/lib/authlogic/session/active_record_trickery.rb +64 -0
  43. data/lib/authlogic/session/base.rb +37 -0
  44. data/lib/authlogic/session/brute_force_protection.rb +96 -0
  45. data/lib/authlogic/session/callbacks.rb +99 -0
  46. data/lib/authlogic/session/cookies.rb +130 -0
  47. data/lib/authlogic/session/existence.rb +93 -0
  48. data/lib/authlogic/session/foundation.rb +71 -0
  49. data/lib/authlogic/session/http_auth.rb +58 -0
  50. data/lib/authlogic/session/id.rb +41 -0
  51. data/lib/authlogic/session/klass.rb +78 -0
  52. data/lib/authlogic/session/magic_columns.rb +95 -0
  53. data/lib/authlogic/session/magic_states.rb +59 -0
  54. data/lib/authlogic/session/params.rb +101 -0
  55. data/lib/authlogic/session/password.rb +240 -0
  56. data/lib/authlogic/session/perishable_token.rb +18 -0
  57. data/lib/authlogic/session/persistence.rb +70 -0
  58. data/lib/authlogic/session/priority_record.rb +34 -0
  59. data/lib/authlogic/session/scopes.rb +101 -0
  60. data/lib/authlogic/session/session.rb +62 -0
  61. data/lib/authlogic/session/timeout.rb +82 -0
  62. data/lib/authlogic/session/unauthorized_record.rb +50 -0
  63. data/lib/authlogic/session/validation.rb +82 -0
  64. data/lib/authlogic/test_case.rb +120 -0
  65. data/lib/authlogic/test_case/mock_controller.rb +45 -0
  66. data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  67. data/lib/authlogic/test_case/mock_logger.rb +10 -0
  68. data/lib/authlogic/test_case/mock_request.rb +19 -0
  69. data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  70. data/rails/init.rb +1 -0
  71. data/shoulda_macros/authlogic.rb +69 -0
  72. data/test/acts_as_authentic_test/base_test.rb +18 -0
  73. data/test/acts_as_authentic_test/email_test.rb +101 -0
  74. data/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
  75. data/test/acts_as_authentic_test/login_test.rb +109 -0
  76. data/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
  77. data/test/acts_as_authentic_test/password_test.rb +236 -0
  78. data/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
  79. data/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
  80. data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  81. data/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
  82. data/test/acts_as_authentic_test/single_access_test.rb +44 -0
  83. data/test/authenticates_many_test.rb +16 -0
  84. data/test/crypto_provider_test/aes256_test.rb +14 -0
  85. data/test/crypto_provider_test/bcrypt_test.rb +14 -0
  86. data/test/crypto_provider_test/sha1_test.rb +23 -0
  87. data/test/crypto_provider_test/sha256_test.rb +14 -0
  88. data/test/crypto_provider_test/sha512_test.rb +14 -0
  89. data/test/fixtures/companies.yml +5 -0
  90. data/test/fixtures/employees.yml +17 -0
  91. data/test/fixtures/projects.yml +3 -0
  92. data/test/fixtures/users.yml +24 -0
  93. data/test/i18n_test.rb +33 -0
  94. data/test/libs/affiliate.rb +7 -0
  95. data/test/libs/company.rb +6 -0
  96. data/test/libs/employee.rb +7 -0
  97. data/test/libs/employee_session.rb +2 -0
  98. data/test/libs/ldaper.rb +3 -0
  99. data/test/libs/ordered_hash.rb +9 -0
  100. data/test/libs/project.rb +3 -0
  101. data/test/libs/user.rb +5 -0
  102. data/test/libs/user_session.rb +6 -0
  103. data/test/random_test.rb +42 -0
  104. data/test/session_test/activation_test.rb +43 -0
  105. data/test/session_test/active_record_trickery_test.rb +36 -0
  106. data/test/session_test/brute_force_protection_test.rb +101 -0
  107. data/test/session_test/callbacks_test.rb +6 -0
  108. data/test/session_test/cookies_test.rb +112 -0
  109. data/test/session_test/credentials_test.rb +0 -0
  110. data/test/session_test/existence_test.rb +64 -0
  111. data/test/session_test/http_auth_test.rb +28 -0
  112. data/test/session_test/id_test.rb +17 -0
  113. data/test/session_test/klass_test.rb +40 -0
  114. data/test/session_test/magic_columns_test.rb +62 -0
  115. data/test/session_test/magic_states_test.rb +60 -0
  116. data/test/session_test/params_test.rb +53 -0
  117. data/test/session_test/password_test.rb +106 -0
  118. data/test/session_test/perishability_test.rb +15 -0
  119. data/test/session_test/persistence_test.rb +21 -0
  120. data/test/session_test/scopes_test.rb +60 -0
  121. data/test/session_test/session_test.rb +59 -0
  122. data/test/session_test/timeout_test.rb +52 -0
  123. data/test/session_test/unauthorized_record_test.rb +13 -0
  124. data/test/session_test/validation_test.rb +23 -0
  125. data/test/test_helper.rb +182 -0
  126. metadata +255 -0
data/Rakefile ADDED
@@ -0,0 +1,41 @@
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.add_dependency "activesupport"
13
+ end
14
+ Jeweler::GemcutterTasks.new
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 << '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 :test => :check_dependencies
40
+
41
+ task :default => :test
data/VERSION.yml ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ :major: 2
3
+ :minor: 1
4
+ :patch: 6
5
+ :build:
data/authlogic.gemspec ADDED
@@ -0,0 +1,216 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{authlogic}
8
+ s.version = "2.1.6"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ben Johnson of Binary Logic"]
12
+ s.date = %q{2010-08-04}
13
+ s.email = %q{bjohnson@binarylogic.com}
14
+ s.extra_rdoc_files = [
15
+ "LICENSE",
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "CHANGELOG.rdoc",
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION.yml",
25
+ "authlogic.gemspec",
26
+ "generators/session/session_generator.rb",
27
+ "generators/session/templates/session.rb",
28
+ "init.rb",
29
+ "lib/authlogic.rb",
30
+ "lib/authlogic/acts_as_authentic/base.rb",
31
+ "lib/authlogic/acts_as_authentic/email.rb",
32
+ "lib/authlogic/acts_as_authentic/logged_in_status.rb",
33
+ "lib/authlogic/acts_as_authentic/login.rb",
34
+ "lib/authlogic/acts_as_authentic/magic_columns.rb",
35
+ "lib/authlogic/acts_as_authentic/password.rb",
36
+ "lib/authlogic/acts_as_authentic/perishable_token.rb",
37
+ "lib/authlogic/acts_as_authentic/persistence_token.rb",
38
+ "lib/authlogic/acts_as_authentic/restful_authentication.rb",
39
+ "lib/authlogic/acts_as_authentic/session_maintenance.rb",
40
+ "lib/authlogic/acts_as_authentic/single_access_token.rb",
41
+ "lib/authlogic/acts_as_authentic/validations_scope.rb",
42
+ "lib/authlogic/authenticates_many/association.rb",
43
+ "lib/authlogic/authenticates_many/base.rb",
44
+ "lib/authlogic/controller_adapters/abstract_adapter.rb",
45
+ "lib/authlogic/controller_adapters/merb_adapter.rb",
46
+ "lib/authlogic/controller_adapters/rails_adapter.rb",
47
+ "lib/authlogic/controller_adapters/sinatra_adapter.rb",
48
+ "lib/authlogic/crypto_providers/aes256.rb",
49
+ "lib/authlogic/crypto_providers/bcrypt.rb",
50
+ "lib/authlogic/crypto_providers/md5.rb",
51
+ "lib/authlogic/crypto_providers/sha1.rb",
52
+ "lib/authlogic/crypto_providers/sha256.rb",
53
+ "lib/authlogic/crypto_providers/sha512.rb",
54
+ "lib/authlogic/crypto_providers/wordpress.rb",
55
+ "lib/authlogic/i18n.rb",
56
+ "lib/authlogic/i18n/translator.rb",
57
+ "lib/authlogic/random.rb",
58
+ "lib/authlogic/regex.rb",
59
+ "lib/authlogic/session/activation.rb",
60
+ "lib/authlogic/session/active_record_trickery.rb",
61
+ "lib/authlogic/session/base.rb",
62
+ "lib/authlogic/session/brute_force_protection.rb",
63
+ "lib/authlogic/session/callbacks.rb",
64
+ "lib/authlogic/session/cookies.rb",
65
+ "lib/authlogic/session/existence.rb",
66
+ "lib/authlogic/session/foundation.rb",
67
+ "lib/authlogic/session/http_auth.rb",
68
+ "lib/authlogic/session/id.rb",
69
+ "lib/authlogic/session/klass.rb",
70
+ "lib/authlogic/session/magic_columns.rb",
71
+ "lib/authlogic/session/magic_states.rb",
72
+ "lib/authlogic/session/params.rb",
73
+ "lib/authlogic/session/password.rb",
74
+ "lib/authlogic/session/perishable_token.rb",
75
+ "lib/authlogic/session/persistence.rb",
76
+ "lib/authlogic/session/priority_record.rb",
77
+ "lib/authlogic/session/scopes.rb",
78
+ "lib/authlogic/session/session.rb",
79
+ "lib/authlogic/session/timeout.rb",
80
+ "lib/authlogic/session/unauthorized_record.rb",
81
+ "lib/authlogic/session/validation.rb",
82
+ "lib/authlogic/test_case.rb",
83
+ "lib/authlogic/test_case/mock_controller.rb",
84
+ "lib/authlogic/test_case/mock_cookie_jar.rb",
85
+ "lib/authlogic/test_case/mock_logger.rb",
86
+ "lib/authlogic/test_case/mock_request.rb",
87
+ "lib/authlogic/test_case/rails_request_adapter.rb",
88
+ "rails/init.rb",
89
+ "shoulda_macros/authlogic.rb",
90
+ "test/acts_as_authentic_test/base_test.rb",
91
+ "test/acts_as_authentic_test/email_test.rb",
92
+ "test/acts_as_authentic_test/logged_in_status_test.rb",
93
+ "test/acts_as_authentic_test/login_test.rb",
94
+ "test/acts_as_authentic_test/magic_columns_test.rb",
95
+ "test/acts_as_authentic_test/password_test.rb",
96
+ "test/acts_as_authentic_test/perishable_token_test.rb",
97
+ "test/acts_as_authentic_test/persistence_token_test.rb",
98
+ "test/acts_as_authentic_test/restful_authentication_test.rb",
99
+ "test/acts_as_authentic_test/session_maintenance_test.rb",
100
+ "test/acts_as_authentic_test/single_access_test.rb",
101
+ "test/authenticates_many_test.rb",
102
+ "test/crypto_provider_test/aes256_test.rb",
103
+ "test/crypto_provider_test/bcrypt_test.rb",
104
+ "test/crypto_provider_test/sha1_test.rb",
105
+ "test/crypto_provider_test/sha256_test.rb",
106
+ "test/crypto_provider_test/sha512_test.rb",
107
+ "test/fixtures/companies.yml",
108
+ "test/fixtures/employees.yml",
109
+ "test/fixtures/projects.yml",
110
+ "test/fixtures/users.yml",
111
+ "test/i18n_test.rb",
112
+ "test/libs/affiliate.rb",
113
+ "test/libs/company.rb",
114
+ "test/libs/employee.rb",
115
+ "test/libs/employee_session.rb",
116
+ "test/libs/ldaper.rb",
117
+ "test/libs/ordered_hash.rb",
118
+ "test/libs/project.rb",
119
+ "test/libs/user.rb",
120
+ "test/libs/user_session.rb",
121
+ "test/random_test.rb",
122
+ "test/session_test/activation_test.rb",
123
+ "test/session_test/active_record_trickery_test.rb",
124
+ "test/session_test/brute_force_protection_test.rb",
125
+ "test/session_test/callbacks_test.rb",
126
+ "test/session_test/cookies_test.rb",
127
+ "test/session_test/credentials_test.rb",
128
+ "test/session_test/existence_test.rb",
129
+ "test/session_test/http_auth_test.rb",
130
+ "test/session_test/id_test.rb",
131
+ "test/session_test/klass_test.rb",
132
+ "test/session_test/magic_columns_test.rb",
133
+ "test/session_test/magic_states_test.rb",
134
+ "test/session_test/params_test.rb",
135
+ "test/session_test/password_test.rb",
136
+ "test/session_test/perishability_test.rb",
137
+ "test/session_test/persistence_test.rb",
138
+ "test/session_test/scopes_test.rb",
139
+ "test/session_test/session_test.rb",
140
+ "test/session_test/timeout_test.rb",
141
+ "test/session_test/unauthorized_record_test.rb",
142
+ "test/session_test/validation_test.rb",
143
+ "test/test_helper.rb"
144
+ ]
145
+ s.homepage = %q{http://github.com/binarylogic/authlogic}
146
+ s.rdoc_options = ["--charset=UTF-8"]
147
+ s.require_paths = ["lib"]
148
+ s.rubygems_version = %q{1.3.7}
149
+ s.summary = %q{A clean, simple, and unobtrusive ruby authentication solution.}
150
+ s.test_files = [
151
+ "test/acts_as_authentic_test/base_test.rb",
152
+ "test/acts_as_authentic_test/email_test.rb",
153
+ "test/acts_as_authentic_test/logged_in_status_test.rb",
154
+ "test/acts_as_authentic_test/login_test.rb",
155
+ "test/acts_as_authentic_test/magic_columns_test.rb",
156
+ "test/acts_as_authentic_test/password_test.rb",
157
+ "test/acts_as_authentic_test/perishable_token_test.rb",
158
+ "test/acts_as_authentic_test/persistence_token_test.rb",
159
+ "test/acts_as_authentic_test/restful_authentication_test.rb",
160
+ "test/acts_as_authentic_test/session_maintenance_test.rb",
161
+ "test/acts_as_authentic_test/single_access_test.rb",
162
+ "test/authenticates_many_test.rb",
163
+ "test/crypto_provider_test/aes256_test.rb",
164
+ "test/crypto_provider_test/bcrypt_test.rb",
165
+ "test/crypto_provider_test/sha1_test.rb",
166
+ "test/crypto_provider_test/sha256_test.rb",
167
+ "test/crypto_provider_test/sha512_test.rb",
168
+ "test/i18n_test.rb",
169
+ "test/libs/affiliate.rb",
170
+ "test/libs/company.rb",
171
+ "test/libs/employee.rb",
172
+ "test/libs/employee_session.rb",
173
+ "test/libs/ldaper.rb",
174
+ "test/libs/ordered_hash.rb",
175
+ "test/libs/project.rb",
176
+ "test/libs/user.rb",
177
+ "test/libs/user_session.rb",
178
+ "test/random_test.rb",
179
+ "test/session_test/activation_test.rb",
180
+ "test/session_test/active_record_trickery_test.rb",
181
+ "test/session_test/brute_force_protection_test.rb",
182
+ "test/session_test/callbacks_test.rb",
183
+ "test/session_test/cookies_test.rb",
184
+ "test/session_test/credentials_test.rb",
185
+ "test/session_test/existence_test.rb",
186
+ "test/session_test/http_auth_test.rb",
187
+ "test/session_test/id_test.rb",
188
+ "test/session_test/klass_test.rb",
189
+ "test/session_test/magic_columns_test.rb",
190
+ "test/session_test/magic_states_test.rb",
191
+ "test/session_test/params_test.rb",
192
+ "test/session_test/password_test.rb",
193
+ "test/session_test/perishability_test.rb",
194
+ "test/session_test/persistence_test.rb",
195
+ "test/session_test/scopes_test.rb",
196
+ "test/session_test/session_test.rb",
197
+ "test/session_test/timeout_test.rb",
198
+ "test/session_test/unauthorized_record_test.rb",
199
+ "test/session_test/validation_test.rb",
200
+ "test/test_helper.rb"
201
+ ]
202
+
203
+ if s.respond_to? :specification_version then
204
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
205
+ s.specification_version = 3
206
+
207
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
208
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
209
+ else
210
+ s.add_dependency(%q<activesupport>, [">= 0"])
211
+ end
212
+ else
213
+ s.add_dependency(%q<activesupport>, [">= 0"])
214
+ end
215
+ end
216
+
@@ -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,64 @@
1
+ require "active_record"
2
+
3
+ AUTHLOGIC_PATH = File.dirname(__FILE__) + "/authlogic/"
4
+
5
+ [
6
+ "i18n",
7
+ "random",
8
+ "regex",
9
+
10
+ "controller_adapters/abstract_adapter",
11
+
12
+ "crypto_providers/md5",
13
+ "crypto_providers/sha1",
14
+ "crypto_providers/sha256",
15
+ "crypto_providers/sha512",
16
+ "crypto_providers/bcrypt",
17
+ "crypto_providers/aes256",
18
+
19
+ "authenticates_many/base",
20
+ "authenticates_many/association",
21
+
22
+ "acts_as_authentic/email",
23
+ "acts_as_authentic/logged_in_status",
24
+ "acts_as_authentic/login",
25
+ "acts_as_authentic/magic_columns",
26
+ "acts_as_authentic/password",
27
+ "acts_as_authentic/perishable_token",
28
+ "acts_as_authentic/persistence_token",
29
+ "acts_as_authentic/restful_authentication",
30
+ "acts_as_authentic/session_maintenance",
31
+ "acts_as_authentic/single_access_token",
32
+ "acts_as_authentic/validations_scope",
33
+ "acts_as_authentic/base",
34
+
35
+ "session/activation",
36
+ "session/active_record_trickery",
37
+ "session/brute_force_protection",
38
+ "session/callbacks",
39
+ "session/cookies",
40
+ "session/existence",
41
+ "session/foundation",
42
+ "session/http_auth",
43
+ "session/id",
44
+ "session/klass",
45
+ "session/magic_columns",
46
+ "session/magic_states",
47
+ "session/params",
48
+ "session/password",
49
+ "session/perishable_token",
50
+ "session/persistence",
51
+ "session/priority_record",
52
+ "session/scopes",
53
+ "session/session",
54
+ "session/timeout",
55
+ "session/unauthorized_record",
56
+ "session/validation",
57
+ "session/base"
58
+ ].each do |library|
59
+ require AUTHLOGIC_PATH + library
60
+ end
61
+
62
+ require AUTHLOGIC_PATH + "controller_adapters/rails_adapter" if defined?( Rails )
63
+ require AUTHLOGIC_PATH + "controller_adapters/merb_adapter" if defined?( Merb )
64
+ require AUTHLOGIC_PATH + "controller_adapters/sinatra_adapter" if defined?( Sinatra )
@@ -0,0 +1,107 @@
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
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Base
96
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Email
97
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::LoggedInStatus
98
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Login
99
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::MagicColumns
100
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Password
101
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PerishableToken
102
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PersistenceToken
103
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::RestfulAuthentication
104
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SessionMaintenance
105
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SingleAccessToken
106
+ ::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::ValidationsScope
107
+