jlecour-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.
- data/.gitignore +9 -0
- data/CHANGELOG.rdoc +345 -0
- data/LICENSE +20 -0
- data/README.rdoc +245 -0
- data/Rakefile +42 -0
- data/VERSION.yml +4 -0
- data/authlogic.gemspec +212 -0
- data/generators/session/session_generator.rb +9 -0
- data/generators/session/templates/session.erb +2 -0
- data/init.rb +1 -0
- data/lib/authlogic.rb +56 -0
- data/lib/authlogic/acts_as_authentic/base.rb +107 -0
- data/lib/authlogic/acts_as_authentic/email.rb +110 -0
- data/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
- data/lib/authlogic/acts_as_authentic/login.rb +141 -0
- data/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
- data/lib/authlogic/acts_as_authentic/password.rb +344 -0
- data/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
- data/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
- data/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
- data/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
- data/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
- data/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
- data/lib/authlogic/authenticates_many/association.rb +42 -0
- data/lib/authlogic/authenticates_many/base.rb +55 -0
- data/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
- data/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
- data/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
- data/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
- data/lib/authlogic/crypto_providers/aes256.rb +43 -0
- data/lib/authlogic/crypto_providers/bcrypt.rb +89 -0
- data/lib/authlogic/crypto_providers/md5.rb +34 -0
- data/lib/authlogic/crypto_providers/sha1.rb +35 -0
- data/lib/authlogic/crypto_providers/sha512.rb +50 -0
- data/lib/authlogic/i18n.rb +83 -0
- data/lib/authlogic/i18n/translator.rb +15 -0
- data/lib/authlogic/random.rb +33 -0
- data/lib/authlogic/regex.rb +25 -0
- data/lib/authlogic/session/activation.rb +58 -0
- data/lib/authlogic/session/active_record_trickery.rb +61 -0
- data/lib/authlogic/session/base.rb +37 -0
- data/lib/authlogic/session/brute_force_protection.rb +96 -0
- data/lib/authlogic/session/callbacks.rb +88 -0
- data/lib/authlogic/session/cookies.rb +130 -0
- data/lib/authlogic/session/existence.rb +93 -0
- data/lib/authlogic/session/foundation.rb +63 -0
- data/lib/authlogic/session/http_auth.rb +58 -0
- data/lib/authlogic/session/id.rb +41 -0
- data/lib/authlogic/session/klass.rb +75 -0
- data/lib/authlogic/session/magic_columns.rb +95 -0
- data/lib/authlogic/session/magic_states.rb +59 -0
- data/lib/authlogic/session/params.rb +101 -0
- data/lib/authlogic/session/password.rb +240 -0
- data/lib/authlogic/session/perishable_token.rb +18 -0
- data/lib/authlogic/session/persistence.rb +70 -0
- data/lib/authlogic/session/priority_record.rb +34 -0
- data/lib/authlogic/session/scopes.rb +101 -0
- data/lib/authlogic/session/session.rb +62 -0
- data/lib/authlogic/session/timeout.rb +82 -0
- data/lib/authlogic/session/unauthorized_record.rb +50 -0
- data/lib/authlogic/session/validation.rb +82 -0
- data/lib/authlogic/test_case.rb +114 -0
- data/lib/authlogic/test_case/mock_controller.rb +45 -0
- data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
- data/lib/authlogic/test_case/mock_logger.rb +10 -0
- data/lib/authlogic/test_case/mock_request.rb +19 -0
- data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
- data/rails/init.rb +1 -0
- data/shoulda_macros/authlogic.rb +13 -0
- data/test/acts_as_authentic_test/base_test.rb +18 -0
- data/test/acts_as_authentic_test/email_test.rb +97 -0
- data/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
- data/test/acts_as_authentic_test/login_test.rb +109 -0
- data/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
- data/test/acts_as_authentic_test/password_test.rb +236 -0
- data/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
- data/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
- data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
- data/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
- data/test/acts_as_authentic_test/single_access_test.rb +44 -0
- data/test/authenticates_many_test.rb +16 -0
- data/test/crypto_provider_test/aes256_test.rb +14 -0
- data/test/crypto_provider_test/bcrypt_test.rb +14 -0
- data/test/crypto_provider_test/sha1_test.rb +23 -0
- data/test/crypto_provider_test/sha512_test.rb +14 -0
- data/test/fixtures/companies.yml +5 -0
- data/test/fixtures/employees.yml +17 -0
- data/test/fixtures/projects.yml +3 -0
- data/test/fixtures/users.yml +24 -0
- data/test/i18n_test.rb +33 -0
- data/test/libs/affiliate.rb +7 -0
- data/test/libs/company.rb +6 -0
- data/test/libs/employee.rb +7 -0
- data/test/libs/employee_session.rb +2 -0
- data/test/libs/ldaper.rb +3 -0
- data/test/libs/ordered_hash.rb +9 -0
- data/test/libs/project.rb +3 -0
- data/test/libs/user.rb +5 -0
- data/test/libs/user_session.rb +2 -0
- data/test/random_test.rb +49 -0
- data/test/session_test/activation_test.rb +43 -0
- data/test/session_test/active_record_trickery_test.rb +36 -0
- data/test/session_test/brute_force_protection_test.rb +101 -0
- data/test/session_test/callbacks_test.rb +6 -0
- data/test/session_test/cookies_test.rb +107 -0
- data/test/session_test/credentials_test.rb +0 -0
- data/test/session_test/existence_test.rb +64 -0
- data/test/session_test/http_auth_test.rb +28 -0
- data/test/session_test/id_test.rb +17 -0
- data/test/session_test/klass_test.rb +35 -0
- data/test/session_test/magic_columns_test.rb +62 -0
- data/test/session_test/magic_states_test.rb +60 -0
- data/test/session_test/params_test.rb +53 -0
- data/test/session_test/password_test.rb +106 -0
- data/test/session_test/perishability_test.rb +15 -0
- data/test/session_test/persistence_test.rb +21 -0
- data/test/session_test/scopes_test.rb +60 -0
- data/test/session_test/session_test.rb +59 -0
- data/test/session_test/timeout_test.rb +52 -0
- data/test/session_test/unauthorized_record_test.rb +13 -0
- data/test/session_test/validation_test.rb +23 -0
- data/test/test_helper.rb +181 -0
- metadata +233 -0
data/Rakefile
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
Jeweler::RubyforgeTasks.new
|
|
16
|
+
rescue LoadError
|
|
17
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
require 'rake/testtask'
|
|
21
|
+
Rake::TestTask.new(:test) do |test|
|
|
22
|
+
test.libs << 'test'
|
|
23
|
+
test.pattern = 'test/**/*_test.rb'
|
|
24
|
+
test.verbose = true
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
begin
|
|
28
|
+
require 'rcov/rcovtask'
|
|
29
|
+
Rcov::RcovTask.new do |test|
|
|
30
|
+
test.libs << 'test'
|
|
31
|
+
test.pattern = 'test/**/*_test.rb'
|
|
32
|
+
test.verbose = true
|
|
33
|
+
end
|
|
34
|
+
rescue LoadError
|
|
35
|
+
task :rcov do
|
|
36
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
task :test => :check_dependencies
|
|
41
|
+
|
|
42
|
+
task :default => :test
|
data/VERSION.yml
ADDED
data/authlogic.gemspec
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = %q{authlogic}
|
|
8
|
+
s.version = "2.1.2"
|
|
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{2009-09-12}
|
|
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.erb",
|
|
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/sha512.rb",
|
|
53
|
+
"lib/authlogic/i18n.rb",
|
|
54
|
+
"lib/authlogic/i18n/translator.rb",
|
|
55
|
+
"lib/authlogic/random.rb",
|
|
56
|
+
"lib/authlogic/regex.rb",
|
|
57
|
+
"lib/authlogic/session/activation.rb",
|
|
58
|
+
"lib/authlogic/session/active_record_trickery.rb",
|
|
59
|
+
"lib/authlogic/session/base.rb",
|
|
60
|
+
"lib/authlogic/session/brute_force_protection.rb",
|
|
61
|
+
"lib/authlogic/session/callbacks.rb",
|
|
62
|
+
"lib/authlogic/session/cookies.rb",
|
|
63
|
+
"lib/authlogic/session/existence.rb",
|
|
64
|
+
"lib/authlogic/session/foundation.rb",
|
|
65
|
+
"lib/authlogic/session/http_auth.rb",
|
|
66
|
+
"lib/authlogic/session/id.rb",
|
|
67
|
+
"lib/authlogic/session/klass.rb",
|
|
68
|
+
"lib/authlogic/session/magic_columns.rb",
|
|
69
|
+
"lib/authlogic/session/magic_states.rb",
|
|
70
|
+
"lib/authlogic/session/params.rb",
|
|
71
|
+
"lib/authlogic/session/password.rb",
|
|
72
|
+
"lib/authlogic/session/perishable_token.rb",
|
|
73
|
+
"lib/authlogic/session/persistence.rb",
|
|
74
|
+
"lib/authlogic/session/priority_record.rb",
|
|
75
|
+
"lib/authlogic/session/scopes.rb",
|
|
76
|
+
"lib/authlogic/session/session.rb",
|
|
77
|
+
"lib/authlogic/session/timeout.rb",
|
|
78
|
+
"lib/authlogic/session/unauthorized_record.rb",
|
|
79
|
+
"lib/authlogic/session/validation.rb",
|
|
80
|
+
"lib/authlogic/test_case.rb",
|
|
81
|
+
"lib/authlogic/test_case/mock_controller.rb",
|
|
82
|
+
"lib/authlogic/test_case/mock_cookie_jar.rb",
|
|
83
|
+
"lib/authlogic/test_case/mock_logger.rb",
|
|
84
|
+
"lib/authlogic/test_case/mock_request.rb",
|
|
85
|
+
"lib/authlogic/test_case/rails_request_adapter.rb",
|
|
86
|
+
"rails/init.rb",
|
|
87
|
+
"shoulda_macros/authlogic.rb",
|
|
88
|
+
"test/acts_as_authentic_test/base_test.rb",
|
|
89
|
+
"test/acts_as_authentic_test/email_test.rb",
|
|
90
|
+
"test/acts_as_authentic_test/logged_in_status_test.rb",
|
|
91
|
+
"test/acts_as_authentic_test/login_test.rb",
|
|
92
|
+
"test/acts_as_authentic_test/magic_columns_test.rb",
|
|
93
|
+
"test/acts_as_authentic_test/password_test.rb",
|
|
94
|
+
"test/acts_as_authentic_test/perishable_token_test.rb",
|
|
95
|
+
"test/acts_as_authentic_test/persistence_token_test.rb",
|
|
96
|
+
"test/acts_as_authentic_test/restful_authentication_test.rb",
|
|
97
|
+
"test/acts_as_authentic_test/session_maintenance_test.rb",
|
|
98
|
+
"test/acts_as_authentic_test/single_access_test.rb",
|
|
99
|
+
"test/authenticates_many_test.rb",
|
|
100
|
+
"test/crypto_provider_test/aes256_test.rb",
|
|
101
|
+
"test/crypto_provider_test/bcrypt_test.rb",
|
|
102
|
+
"test/crypto_provider_test/sha1_test.rb",
|
|
103
|
+
"test/crypto_provider_test/sha512_test.rb",
|
|
104
|
+
"test/fixtures/companies.yml",
|
|
105
|
+
"test/fixtures/employees.yml",
|
|
106
|
+
"test/fixtures/projects.yml",
|
|
107
|
+
"test/fixtures/users.yml",
|
|
108
|
+
"test/i18n_test.rb",
|
|
109
|
+
"test/libs/affiliate.rb",
|
|
110
|
+
"test/libs/company.rb",
|
|
111
|
+
"test/libs/employee.rb",
|
|
112
|
+
"test/libs/employee_session.rb",
|
|
113
|
+
"test/libs/ldaper.rb",
|
|
114
|
+
"test/libs/ordered_hash.rb",
|
|
115
|
+
"test/libs/project.rb",
|
|
116
|
+
"test/libs/user.rb",
|
|
117
|
+
"test/libs/user_session.rb",
|
|
118
|
+
"test/random_test.rb",
|
|
119
|
+
"test/session_test/activation_test.rb",
|
|
120
|
+
"test/session_test/active_record_trickery_test.rb",
|
|
121
|
+
"test/session_test/brute_force_protection_test.rb",
|
|
122
|
+
"test/session_test/callbacks_test.rb",
|
|
123
|
+
"test/session_test/cookies_test.rb",
|
|
124
|
+
"test/session_test/credentials_test.rb",
|
|
125
|
+
"test/session_test/existence_test.rb",
|
|
126
|
+
"test/session_test/http_auth_test.rb",
|
|
127
|
+
"test/session_test/id_test.rb",
|
|
128
|
+
"test/session_test/klass_test.rb",
|
|
129
|
+
"test/session_test/magic_columns_test.rb",
|
|
130
|
+
"test/session_test/magic_states_test.rb",
|
|
131
|
+
"test/session_test/params_test.rb",
|
|
132
|
+
"test/session_test/password_test.rb",
|
|
133
|
+
"test/session_test/perishability_test.rb",
|
|
134
|
+
"test/session_test/persistence_test.rb",
|
|
135
|
+
"test/session_test/scopes_test.rb",
|
|
136
|
+
"test/session_test/session_test.rb",
|
|
137
|
+
"test/session_test/timeout_test.rb",
|
|
138
|
+
"test/session_test/unauthorized_record_test.rb",
|
|
139
|
+
"test/session_test/validation_test.rb",
|
|
140
|
+
"test/test_helper.rb"
|
|
141
|
+
]
|
|
142
|
+
s.homepage = %q{http://github.com/binarylogic/authlogic}
|
|
143
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
|
144
|
+
s.require_paths = ["lib"]
|
|
145
|
+
s.rubyforge_project = %q{authlogic}
|
|
146
|
+
s.rubygems_version = %q{1.3.5}
|
|
147
|
+
s.summary = %q{A clean, simple, and unobtrusive ruby authentication solution.}
|
|
148
|
+
s.test_files = [
|
|
149
|
+
"test/acts_as_authentic_test/base_test.rb",
|
|
150
|
+
"test/acts_as_authentic_test/email_test.rb",
|
|
151
|
+
"test/acts_as_authentic_test/logged_in_status_test.rb",
|
|
152
|
+
"test/acts_as_authentic_test/login_test.rb",
|
|
153
|
+
"test/acts_as_authentic_test/magic_columns_test.rb",
|
|
154
|
+
"test/acts_as_authentic_test/password_test.rb",
|
|
155
|
+
"test/acts_as_authentic_test/perishable_token_test.rb",
|
|
156
|
+
"test/acts_as_authentic_test/persistence_token_test.rb",
|
|
157
|
+
"test/acts_as_authentic_test/restful_authentication_test.rb",
|
|
158
|
+
"test/acts_as_authentic_test/session_maintenance_test.rb",
|
|
159
|
+
"test/acts_as_authentic_test/single_access_test.rb",
|
|
160
|
+
"test/authenticates_many_test.rb",
|
|
161
|
+
"test/crypto_provider_test/aes256_test.rb",
|
|
162
|
+
"test/crypto_provider_test/bcrypt_test.rb",
|
|
163
|
+
"test/crypto_provider_test/sha1_test.rb",
|
|
164
|
+
"test/crypto_provider_test/sha512_test.rb",
|
|
165
|
+
"test/i18n_test.rb",
|
|
166
|
+
"test/libs/affiliate.rb",
|
|
167
|
+
"test/libs/company.rb",
|
|
168
|
+
"test/libs/employee.rb",
|
|
169
|
+
"test/libs/employee_session.rb",
|
|
170
|
+
"test/libs/ldaper.rb",
|
|
171
|
+
"test/libs/ordered_hash.rb",
|
|
172
|
+
"test/libs/project.rb",
|
|
173
|
+
"test/libs/user.rb",
|
|
174
|
+
"test/libs/user_session.rb",
|
|
175
|
+
"test/random_test.rb",
|
|
176
|
+
"test/session_test/activation_test.rb",
|
|
177
|
+
"test/session_test/active_record_trickery_test.rb",
|
|
178
|
+
"test/session_test/brute_force_protection_test.rb",
|
|
179
|
+
"test/session_test/callbacks_test.rb",
|
|
180
|
+
"test/session_test/cookies_test.rb",
|
|
181
|
+
"test/session_test/credentials_test.rb",
|
|
182
|
+
"test/session_test/existence_test.rb",
|
|
183
|
+
"test/session_test/http_auth_test.rb",
|
|
184
|
+
"test/session_test/id_test.rb",
|
|
185
|
+
"test/session_test/klass_test.rb",
|
|
186
|
+
"test/session_test/magic_columns_test.rb",
|
|
187
|
+
"test/session_test/magic_states_test.rb",
|
|
188
|
+
"test/session_test/params_test.rb",
|
|
189
|
+
"test/session_test/password_test.rb",
|
|
190
|
+
"test/session_test/perishability_test.rb",
|
|
191
|
+
"test/session_test/persistence_test.rb",
|
|
192
|
+
"test/session_test/scopes_test.rb",
|
|
193
|
+
"test/session_test/session_test.rb",
|
|
194
|
+
"test/session_test/timeout_test.rb",
|
|
195
|
+
"test/session_test/unauthorized_record_test.rb",
|
|
196
|
+
"test/session_test/validation_test.rb",
|
|
197
|
+
"test/test_helper.rb"
|
|
198
|
+
]
|
|
199
|
+
|
|
200
|
+
if s.respond_to? :specification_version then
|
|
201
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
202
|
+
s.specification_version = 3
|
|
203
|
+
|
|
204
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
205
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
|
206
|
+
else
|
|
207
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
|
208
|
+
end
|
|
209
|
+
else
|
|
210
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
|
211
|
+
end
|
|
212
|
+
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.erb', File.join('app/models', class_path, "#{file_name}.rb")
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
data/init.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/rails/init.rb"
|
data/lib/authlogic.rb
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require "active_record"
|
|
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
|
+
require File.dirname(__FILE__) + "/authlogic/controller_adapters/sinatra_adapter" if defined?(Sinatra)
|
|
11
|
+
|
|
12
|
+
require File.dirname(__FILE__) + "/authlogic/crypto_providers/md5"
|
|
13
|
+
require File.dirname(__FILE__) + "/authlogic/crypto_providers/sha1"
|
|
14
|
+
require File.dirname(__FILE__) + "/authlogic/crypto_providers/sha512"
|
|
15
|
+
require File.dirname(__FILE__) + "/authlogic/crypto_providers/bcrypt"
|
|
16
|
+
require File.dirname(__FILE__) + "/authlogic/crypto_providers/aes256"
|
|
17
|
+
|
|
18
|
+
require File.dirname(__FILE__) + "/authlogic/authenticates_many/base"
|
|
19
|
+
require File.dirname(__FILE__) + "/authlogic/authenticates_many/association"
|
|
20
|
+
|
|
21
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/email"
|
|
22
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/logged_in_status"
|
|
23
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/login"
|
|
24
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/magic_columns"
|
|
25
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/password"
|
|
26
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/perishable_token"
|
|
27
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/persistence_token"
|
|
28
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/restful_authentication"
|
|
29
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/session_maintenance"
|
|
30
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/single_access_token"
|
|
31
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/validations_scope"
|
|
32
|
+
require File.dirname(__FILE__) + "/authlogic/acts_as_authentic/base"
|
|
33
|
+
|
|
34
|
+
require File.dirname(__FILE__) + "/authlogic/session/activation"
|
|
35
|
+
require File.dirname(__FILE__) + "/authlogic/session/active_record_trickery"
|
|
36
|
+
require File.dirname(__FILE__) + "/authlogic/session/brute_force_protection"
|
|
37
|
+
require File.dirname(__FILE__) + "/authlogic/session/callbacks"
|
|
38
|
+
require File.dirname(__FILE__) + "/authlogic/session/cookies"
|
|
39
|
+
require File.dirname(__FILE__) + "/authlogic/session/existence"
|
|
40
|
+
require File.dirname(__FILE__) + "/authlogic/session/foundation"
|
|
41
|
+
require File.dirname(__FILE__) + "/authlogic/session/http_auth"
|
|
42
|
+
require File.dirname(__FILE__) + "/authlogic/session/id"
|
|
43
|
+
require File.dirname(__FILE__) + "/authlogic/session/klass"
|
|
44
|
+
require File.dirname(__FILE__) + "/authlogic/session/magic_columns"
|
|
45
|
+
require File.dirname(__FILE__) + "/authlogic/session/magic_states"
|
|
46
|
+
require File.dirname(__FILE__) + "/authlogic/session/params"
|
|
47
|
+
require File.dirname(__FILE__) + "/authlogic/session/password"
|
|
48
|
+
require File.dirname(__FILE__) + "/authlogic/session/perishable_token"
|
|
49
|
+
require File.dirname(__FILE__) + "/authlogic/session/persistence"
|
|
50
|
+
require File.dirname(__FILE__) + "/authlogic/session/priority_record"
|
|
51
|
+
require File.dirname(__FILE__) + "/authlogic/session/scopes"
|
|
52
|
+
require File.dirname(__FILE__) + "/authlogic/session/session"
|
|
53
|
+
require File.dirname(__FILE__) + "/authlogic/session/timeout"
|
|
54
|
+
require File.dirname(__FILE__) + "/authlogic/session/unauthorized_record"
|
|
55
|
+
require File.dirname(__FILE__) + "/authlogic/session/validation"
|
|
56
|
+
require File.dirname(__FILE__) + "/authlogic/session/base"
|
|
@@ -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
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
module Authlogic
|
|
2
|
+
module ActsAsAuthentic
|
|
3
|
+
# Sometimes models won't have an explicit "login" or "username" field. Instead they want to use the email field.
|
|
4
|
+
# In this case, authlogic provides validations to make sure the email submited is actually a valid email. Don't worry,
|
|
5
|
+
# if you do have a login or username field, Authlogic will still validate your email field. One less thing you have to
|
|
6
|
+
# worry about.
|
|
7
|
+
module Email
|
|
8
|
+
def self.included(klass)
|
|
9
|
+
klass.class_eval do
|
|
10
|
+
extend Config
|
|
11
|
+
add_acts_as_authentic_module(Methods)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Configuration to modify how Authlogic handles the email field.
|
|
16
|
+
module Config
|
|
17
|
+
# The name of the field that stores email addresses.
|
|
18
|
+
#
|
|
19
|
+
# * <tt>Default:</tt> :email, if it exists
|
|
20
|
+
# * <tt>Accepts:</tt> Symbol
|
|
21
|
+
def email_field(value = nil)
|
|
22
|
+
rw_config(:email_field, value, first_column_to_exist(nil, :email, :email_address))
|
|
23
|
+
end
|
|
24
|
+
alias_method :email_field=, :email_field
|
|
25
|
+
|
|
26
|
+
# Toggles validating the email field or not.
|
|
27
|
+
#
|
|
28
|
+
# * <tt>Default:</tt> true
|
|
29
|
+
# * <tt>Accepts:</tt> Boolean
|
|
30
|
+
def validate_email_field(value = nil)
|
|
31
|
+
rw_config(:validate_email_field, value, true)
|
|
32
|
+
end
|
|
33
|
+
alias_method :validate_email_field=, :validate_email_field
|
|
34
|
+
|
|
35
|
+
# A hash of options for the validates_length_of call for the email field. Allows you to change this however you want.
|
|
36
|
+
#
|
|
37
|
+
# <b>Keep in mind this is ruby. I wanted to keep this as flexible as possible, so you can completely replace the hash or
|
|
38
|
+
# merge options into it. Checkout the convenience function merge_validates_length_of_email_field_options to merge
|
|
39
|
+
# options.</b>
|
|
40
|
+
#
|
|
41
|
+
# * <tt>Default:</tt> {:within => 6..100}
|
|
42
|
+
# * <tt>Accepts:</tt> Hash of options accepted by validates_length_of
|
|
43
|
+
def validates_length_of_email_field_options(value = nil)
|
|
44
|
+
rw_config(:validates_length_of_email_field_options, value, {:within => 6..100})
|
|
45
|
+
end
|
|
46
|
+
alias_method :validates_length_of_email_field_options=, :validates_length_of_email_field_options
|
|
47
|
+
|
|
48
|
+
# A convenience function to merge options into the validates_length_of_email_field_options. So intead of:
|
|
49
|
+
#
|
|
50
|
+
# self.validates_length_of_email_field_options = validates_length_of_email_field_options.merge(:my_option => my_value)
|
|
51
|
+
#
|
|
52
|
+
# You can do this:
|
|
53
|
+
#
|
|
54
|
+
# merge_validates_length_of_email_field_options :my_option => my_value
|
|
55
|
+
def merge_validates_length_of_email_field_options(options = {})
|
|
56
|
+
self.validates_length_of_email_field_options = validates_length_of_email_field_options.merge(options)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# A hash of options for the validates_format_of call for the email field. Allows you to change this however you want.
|
|
60
|
+
#
|
|
61
|
+
# <b>Keep in mind this is ruby. I wanted to keep this as flexible as possible, so you can completely replace the hash or
|
|
62
|
+
# merge options into it. Checkout the convenience function merge_validates_format_of_email_field_options to merge
|
|
63
|
+
# options.</b>
|
|
64
|
+
#
|
|
65
|
+
# * <tt>Default:</tt> {:with => Authlogic::Regex.email, :message => I18n.t('error_messages.email_invalid', :default => "should look like an email address.")}
|
|
66
|
+
# * <tt>Accepts:</tt> Hash of options accepted by validates_format_of
|
|
67
|
+
def validates_format_of_email_field_options(value = nil)
|
|
68
|
+
rw_config(:validates_format_of_email_field_options, value, {:with => Authlogic::Regex.email, :message => I18n.t('error_messages.email_invalid', :default => "should look like an email address.")})
|
|
69
|
+
end
|
|
70
|
+
alias_method :validates_format_of_email_field_options=, :validates_format_of_email_field_options
|
|
71
|
+
|
|
72
|
+
# See merge_validates_length_of_email_field_options. The same thing except for validates_format_of_email_field_options.
|
|
73
|
+
def merge_validates_format_of_email_field_options(options = {})
|
|
74
|
+
self.validates_format_of_email_field_options = validates_format_of_email_field_options.merge(options)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# A hash of options for the validates_uniqueness_of call for the email field. Allows you to change this however you want.
|
|
78
|
+
#
|
|
79
|
+
# <b>Keep in mind this is ruby. I wanted to keep this as flexible as possible, so you can completely replace the hash or
|
|
80
|
+
# merge options into it. Checkout the convenience function merge_validates_uniqueness_of_email_field_options to merge
|
|
81
|
+
# options.</b>
|
|
82
|
+
#
|
|
83
|
+
# * <tt>Default:</tt> {:case_sensitive => false, :scope => validations_scope, :if => "#{email_field}_changed?".to_sym}
|
|
84
|
+
# * <tt>Accepts:</tt> Hash of options accepted by validates_uniqueness_of
|
|
85
|
+
def validates_uniqueness_of_email_field_options(value = nil)
|
|
86
|
+
rw_config(:validates_uniqueness_of_email_field_options, value, {:case_sensitive => false, :scope => validations_scope, :if => "#{email_field}_changed?".to_sym})
|
|
87
|
+
end
|
|
88
|
+
alias_method :validates_uniqueness_of_email_field_options=, :validates_uniqueness_of_email_field_options
|
|
89
|
+
|
|
90
|
+
# See merge_validates_length_of_email_field_options. The same thing except for validates_uniqueness_of_email_field_options.
|
|
91
|
+
def merge_validates_uniqueness_of_email_field_options(options = {})
|
|
92
|
+
self.validates_uniqueness_of_email_field_options = validates_uniqueness_of_email_field_options.merge(options)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# All methods relating to the email field
|
|
97
|
+
module Methods
|
|
98
|
+
def self.included(klass)
|
|
99
|
+
klass.class_eval do
|
|
100
|
+
if validate_email_field && email_field
|
|
101
|
+
validates_length_of email_field, validates_length_of_email_field_options
|
|
102
|
+
validates_format_of email_field, validates_format_of_email_field_options
|
|
103
|
+
validates_uniqueness_of email_field, validates_uniqueness_of_email_field_options
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|