authpwn_rails 0.16.2 → 0.17.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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -6
- data/Gemfile +7 -8
- data/Gemfile.lock +97 -113
- data/Gemfile.rails4 +8 -9
- data/{Gemfile.rails3 → Gemfile.rails41} +6 -7
- data/Gemfile.rails42 +17 -0
- data/README.rdoc +1 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/models/credentials/email.rb +15 -37
- data/app/models/credentials/omni_auth_uid.rb +96 -0
- data/app/models/credentials/password.rb +0 -5
- data/app/models/tokens/base.rb +11 -38
- data/authpwn_rails.gemspec +35 -33
- data/lib/authpwn_rails/credential_model.rb +1 -5
- data/lib/authpwn_rails/generators/all_generator.rb +3 -1
- data/lib/authpwn_rails/generators/templates/001_create_users.rb +3 -3
- data/lib/authpwn_rails/generators/templates/003_create_credentials.rb +7 -7
- data/lib/authpwn_rails/generators/templates/credentials.yml +13 -13
- data/lib/authpwn_rails/generators/templates/omniauth_initializer.rb +13 -0
- data/lib/authpwn_rails/generators/templates/session_controller_test.rb +22 -0
- data/lib/authpwn_rails/generators/templates/session_mailer/email_verification_email.html.erb +3 -3
- data/lib/authpwn_rails/generators/templates/session_mailer/email_verification_email.text.erb +1 -1
- data/lib/authpwn_rails/generators/templates/session_mailer/reset_password_email.html.erb +3 -3
- data/lib/authpwn_rails/generators/templates/session_mailer/reset_password_email.text.erb +1 -1
- data/lib/authpwn_rails/generators/templates/session_mailer.rb +1 -1
- data/lib/authpwn_rails/generators/templates/session_mailer_test.rb +14 -4
- data/lib/authpwn_rails/generators/templates/user.rb +40 -5
- data/lib/authpwn_rails/http_basic.rb +6 -5
- data/lib/authpwn_rails/routes.rb +20 -7
- data/lib/authpwn_rails/session.rb +1 -1
- data/lib/authpwn_rails/session_controller.rb +48 -12
- data/lib/authpwn_rails/session_mailer.rb +13 -14
- data/lib/authpwn_rails/session_model.rb +4 -24
- data/lib/authpwn_rails/user_extensions/email_field.rb +5 -21
- data/lib/authpwn_rails/user_extensions/password_field.rb +0 -4
- data/lib/authpwn_rails/user_model.rb +46 -12
- data/lib/authpwn_rails.rb +0 -2
- data/test/cookie_controller_test.rb +1 -7
- data/test/credentials/omni_auth_uid_credential_test.rb +141 -0
- data/test/helpers/action_controller.rb +2 -8
- data/test/helpers/db_setup.rb +8 -16
- data/test/helpers/routes.rb +35 -30
- data/test/helpers/test_order.rb +3 -0
- data/test/http_basic_controller_test.rb +7 -18
- data/test/routes_test.rb +19 -10
- data/test/session_controller_api_test.rb +181 -30
- data/test/session_controller_test.rb +6 -0
- data/test/session_mailer_api_test.rb +18 -13
- data/test/session_mailer_test.rb +6 -0
- data/test/test_helper.rb +3 -3
- data/test/user_test.rb +54 -7
- metadata +65 -64
- data/app/models/credentials/facebook.rb +0 -63
- data/lib/authpwn_rails/facebook_session.rb +0 -33
- data/lib/authpwn_rails/user_extensions/facebook_fields.rb +0 -63
- data/test/credentials/facebook_credential_test.rb +0 -64
- data/test/facebook_controller_test.rb +0 -65
- data/test/user_extensions/facebook_fields_test.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9776c5aa80187c9368f044da7036cb46c872e3e
|
4
|
+
data.tar.gz: 2df0b77fc051007d52ea662efb289bedcbbd6ead
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a3c415f26386f64090d662398eee705a573ecf6f10cff87ae754eb3f2e65d26f729e4cc6ac91d494c8f36acc4a560a1520b711b99d933e6609dee2d2c151e26
|
7
|
+
data.tar.gz: 261ff309c4d7c7b8bc404d13b4fe7da501801f68c2b4881d9fa55a573ef253bb7f54c16106aa17b2d51d6b53d2843887afa1f9b1e0d52bf5752275f8c1561201
|
data/.travis.yml
CHANGED
@@ -5,13 +5,10 @@ env:
|
|
5
5
|
- DB=pg DB_USER=postgres
|
6
6
|
- DB=sqlite
|
7
7
|
gemfile:
|
8
|
-
- Gemfile.rails3
|
9
8
|
- Gemfile.rails4
|
9
|
+
- Gemfile.rails41
|
10
|
+
- Gemfile.rails42
|
10
11
|
rvm:
|
11
|
-
- 1.9.3
|
12
12
|
- 2.0.0
|
13
|
+
- 2.1.0
|
13
14
|
- rbx
|
14
|
-
matrix:
|
15
|
-
exclude:
|
16
|
-
- gemfile: Gemfile.rails3
|
17
|
-
rvm: 2.0.0
|
data/Gemfile
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem '
|
4
|
-
|
5
|
-
gem 'rails', '>= 3.2.17'
|
3
|
+
gem 'rails', '>= 4.0.9'
|
6
4
|
|
7
5
|
group :development do
|
8
|
-
gem 'bundler', '>= 1.3
|
6
|
+
gem 'bundler', '>= 1.7.3'
|
9
7
|
gem 'mocha', '>= 0.14.0'
|
10
|
-
gem 'jeweler', '>=
|
8
|
+
gem 'jeweler', '>= 2.0.1'
|
11
9
|
gem 'simplecov', '>= 0'
|
12
|
-
gem 'mysql2', '>= 0.3.
|
13
|
-
gem '
|
14
|
-
gem '
|
10
|
+
gem 'mysql2', '>= 0.3.16'
|
11
|
+
gem 'omniauth', '>= 1.2.2'
|
12
|
+
gem 'pg', '>= 0.17.1'
|
13
|
+
gem 'sqlite3', '>= 1.3.9'
|
15
14
|
gem 'rubysl', platforms: [:rbx]
|
16
15
|
gem 'rubysl-bundler', platforms: [:rbx]
|
17
16
|
gem 'rubysl-rake', platforms: [:rbx]
|
data/Gemfile.lock
CHANGED
@@ -1,67 +1,55 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
actionmailer (4.
|
5
|
-
actionpack (= 4.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
actionmailer (4.1.7)
|
5
|
+
actionpack (= 4.1.7)
|
6
|
+
actionview (= 4.1.7)
|
7
|
+
mail (~> 2.5, >= 2.5.4)
|
8
|
+
actionpack (4.1.7)
|
9
|
+
actionview (= 4.1.7)
|
10
|
+
activesupport (= 4.1.7)
|
11
11
|
rack (~> 1.5.2)
|
12
12
|
rack-test (~> 0.6.2)
|
13
|
-
|
14
|
-
activesupport (= 4.
|
15
|
-
builder (~> 3.1
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
actionview (4.1.7)
|
14
|
+
activesupport (= 4.1.7)
|
15
|
+
builder (~> 3.1)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
activemodel (4.1.7)
|
18
|
+
activesupport (= 4.1.7)
|
19
|
+
builder (~> 3.1)
|
20
|
+
activerecord (4.1.7)
|
21
|
+
activemodel (= 4.1.7)
|
22
|
+
activesupport (= 4.1.7)
|
23
|
+
arel (~> 5.0.0)
|
24
|
+
activesupport (4.1.7)
|
25
|
+
i18n (~> 0.6, >= 0.6.9)
|
26
|
+
json (~> 1.7, >= 1.7.7)
|
27
|
+
minitest (~> 5.1)
|
26
28
|
thread_safe (~> 0.1)
|
27
|
-
tzinfo (~>
|
28
|
-
addressable (2.3.
|
29
|
-
arel (
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
docile (1.1.
|
29
|
+
tzinfo (~> 1.1)
|
30
|
+
addressable (2.3.6)
|
31
|
+
arel (5.0.1.20140414130214)
|
32
|
+
builder (3.2.2)
|
33
|
+
descendants_tracker (0.0.4)
|
34
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
35
|
+
docile (1.1.5)
|
34
36
|
erubis (2.7.0)
|
35
37
|
faraday (0.9.0)
|
36
38
|
multipart-post (>= 1.2, < 3)
|
37
|
-
fbgraph (1.10.0)
|
38
|
-
activesupport
|
39
|
-
faraday (>= 0.7.5)
|
40
|
-
hashie (>= 1.0.0)
|
41
|
-
i18n
|
42
|
-
json (>= 1.0.0)
|
43
|
-
oauth2 (>= 0.5.0)
|
44
|
-
rest-client
|
45
|
-
fbgraph_rails (0.2.2)
|
46
|
-
erubis (>= 2.7.0)
|
47
|
-
fbgraph (>= 1.8.3)
|
48
|
-
json (>= 1.6.1)
|
49
|
-
oauth2 (>= 0.5.0)
|
50
|
-
rails (>= 3.1.0)
|
51
39
|
ffi2-generators (0.1.1)
|
52
|
-
git (1.2.
|
53
|
-
github_api (0.
|
40
|
+
git (1.2.8)
|
41
|
+
github_api (0.12.2)
|
54
42
|
addressable (~> 2.3)
|
55
|
-
descendants_tracker (~> 0.0.
|
43
|
+
descendants_tracker (~> 0.0.4)
|
56
44
|
faraday (~> 0.8, < 0.10)
|
57
|
-
hashie (>=
|
45
|
+
hashie (>= 3.3)
|
58
46
|
multi_json (>= 1.7.5, < 2.0)
|
59
|
-
nokogiri (~> 1.6.
|
47
|
+
nokogiri (~> 1.6.3)
|
60
48
|
oauth2
|
61
|
-
hashie (
|
62
|
-
highline (1.6.
|
49
|
+
hashie (3.3.1)
|
50
|
+
highline (1.6.21)
|
63
51
|
hike (1.2.3)
|
64
|
-
i18n (0.6.
|
52
|
+
i18n (0.6.11)
|
65
53
|
jeweler (2.0.1)
|
66
54
|
builder
|
67
55
|
bundler (>= 1.0)
|
@@ -72,53 +60,54 @@ GEM
|
|
72
60
|
rake
|
73
61
|
rdoc
|
74
62
|
json (1.8.1)
|
75
|
-
jwt (0.
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
minitest (4.7.5)
|
84
|
-
mocha (1.0.0)
|
63
|
+
jwt (1.0.0)
|
64
|
+
mail (2.6.3)
|
65
|
+
mime-types (>= 1.16, < 3)
|
66
|
+
metaclass (0.0.4)
|
67
|
+
mime-types (2.4.3)
|
68
|
+
mini_portile (0.6.0)
|
69
|
+
minitest (5.4.2)
|
70
|
+
mocha (1.1.0)
|
85
71
|
metaclass (~> 0.0.1)
|
86
|
-
multi_json (1.
|
72
|
+
multi_json (1.10.1)
|
87
73
|
multi_xml (0.5.5)
|
88
74
|
multipart-post (2.0.0)
|
89
|
-
mysql2 (0.3.
|
90
|
-
nokogiri (1.6.1)
|
91
|
-
mini_portile (
|
92
|
-
oauth2 (0.
|
75
|
+
mysql2 (0.3.16)
|
76
|
+
nokogiri (1.6.3.1)
|
77
|
+
mini_portile (= 0.6.0)
|
78
|
+
oauth2 (1.0.0)
|
93
79
|
faraday (>= 0.8, < 0.10)
|
94
|
-
jwt (~>
|
80
|
+
jwt (~> 1.0)
|
95
81
|
multi_json (~> 1.3)
|
96
82
|
multi_xml (~> 0.5)
|
97
83
|
rack (~> 1.2)
|
84
|
+
omniauth (1.2.2)
|
85
|
+
hashie (>= 1.2, < 4)
|
86
|
+
rack (~> 1.0)
|
98
87
|
pg (0.17.1)
|
99
|
-
polyglot (0.3.4)
|
100
88
|
rack (1.5.2)
|
101
89
|
rack-test (0.6.2)
|
102
90
|
rack (>= 1.0)
|
103
|
-
rails (4.
|
104
|
-
actionmailer (= 4.
|
105
|
-
actionpack (= 4.
|
106
|
-
|
107
|
-
|
91
|
+
rails (4.1.7)
|
92
|
+
actionmailer (= 4.1.7)
|
93
|
+
actionpack (= 4.1.7)
|
94
|
+
actionview (= 4.1.7)
|
95
|
+
activemodel (= 4.1.7)
|
96
|
+
activerecord (= 4.1.7)
|
97
|
+
activesupport (= 4.1.7)
|
108
98
|
bundler (>= 1.3.0, < 2.0)
|
109
|
-
railties (= 4.
|
110
|
-
sprockets-rails (~> 2.0
|
111
|
-
railties (4.
|
112
|
-
actionpack (= 4.
|
113
|
-
activesupport (= 4.
|
99
|
+
railties (= 4.1.7)
|
100
|
+
sprockets-rails (~> 2.0)
|
101
|
+
railties (4.1.7)
|
102
|
+
actionpack (= 4.1.7)
|
103
|
+
activesupport (= 4.1.7)
|
114
104
|
rake (>= 0.8.7)
|
115
105
|
thor (>= 0.18.1, < 2.0)
|
116
|
-
rake (10.
|
117
|
-
|
106
|
+
rake (10.3.2)
|
107
|
+
rb-readline (0.5.1)
|
108
|
+
rdoc (4.1.2)
|
118
109
|
json (~> 1.4)
|
119
|
-
|
120
|
-
mime-types (>= 1.16)
|
121
|
-
rubysl (2.0.15)
|
110
|
+
rubysl (2.1.0)
|
122
111
|
rubysl-abbrev (~> 2.0)
|
123
112
|
rubysl-base64 (~> 2.0)
|
124
113
|
rubysl-benchmark (~> 2.0)
|
@@ -152,7 +141,7 @@ GEM
|
|
152
141
|
rubysl-io-nonblock (~> 2.0)
|
153
142
|
rubysl-io-wait (~> 2.0)
|
154
143
|
rubysl-ipaddr (~> 2.0)
|
155
|
-
rubysl-irb (~> 2.
|
144
|
+
rubysl-irb (~> 2.1)
|
156
145
|
rubysl-logger (~> 2.0)
|
157
146
|
rubysl-mathn (~> 2.0)
|
158
147
|
rubysl-matrix (~> 2.0)
|
@@ -181,7 +170,6 @@ GEM
|
|
181
170
|
rubysl-pstore (~> 2.0)
|
182
171
|
rubysl-pty (~> 2.0)
|
183
172
|
rubysl-rational (~> 2.0)
|
184
|
-
rubysl-readline (~> 2.0)
|
185
173
|
rubysl-resolv (~> 2.0)
|
186
174
|
rubysl-rexml (~> 2.0)
|
187
175
|
rubysl-rinda (~> 2.0)
|
@@ -232,7 +220,7 @@ GEM
|
|
232
220
|
rubysl-csv (2.0.2)
|
233
221
|
rubysl-english (~> 2.0)
|
234
222
|
rubysl-curses (2.0.1)
|
235
|
-
rubysl-date (2.0.
|
223
|
+
rubysl-date (2.0.8)
|
236
224
|
rubysl-delegate (2.0.1)
|
237
225
|
rubysl-digest (2.0.3)
|
238
226
|
rubysl-drb (2.0.1)
|
@@ -257,10 +245,10 @@ GEM
|
|
257
245
|
rubysl-io-nonblock (2.0.0)
|
258
246
|
rubysl-io-wait (2.0.0)
|
259
247
|
rubysl-ipaddr (2.0.0)
|
260
|
-
rubysl-irb (2.0
|
248
|
+
rubysl-irb (2.1.0)
|
249
|
+
rb-readline (~> 0.5)
|
261
250
|
rubysl-e2mmap (~> 2.0)
|
262
251
|
rubysl-mathn (~> 2.0)
|
263
|
-
rubysl-readline (~> 2.0)
|
264
252
|
rubysl-thread (~> 2.0)
|
265
253
|
rubysl-logger (2.0.0)
|
266
254
|
rubysl-mathn (2.0.0)
|
@@ -285,12 +273,12 @@ GEM
|
|
285
273
|
rubysl-observer (2.0.0)
|
286
274
|
rubysl-open-uri (2.0.0)
|
287
275
|
rubysl-open3 (2.0.0)
|
288
|
-
rubysl-openssl (2.1
|
276
|
+
rubysl-openssl (2.2.1)
|
289
277
|
rubysl-optparse (2.0.1)
|
290
278
|
rubysl-shellwords (~> 2.0)
|
291
279
|
rubysl-ostruct (2.0.4)
|
292
|
-
rubysl-pathname (2.
|
293
|
-
rubysl-prettyprint (2.0.
|
280
|
+
rubysl-pathname (2.1.0)
|
281
|
+
rubysl-prettyprint (2.0.3)
|
294
282
|
rubysl-prime (2.0.1)
|
295
283
|
rubysl-profile (2.0.0)
|
296
284
|
rubysl-profiler (2.0.1)
|
@@ -310,9 +298,8 @@ GEM
|
|
310
298
|
rubysl-tempfile (~> 2.0)
|
311
299
|
rubysl-thread (~> 2.0)
|
312
300
|
rubysl-rational (2.0.1)
|
313
|
-
rubysl-
|
314
|
-
rubysl-
|
315
|
-
rubysl-rexml (2.0.2)
|
301
|
+
rubysl-resolv (2.1.0)
|
302
|
+
rubysl-rexml (2.0.3)
|
316
303
|
rubysl-rinda (2.0.1)
|
317
304
|
rubysl-rss (2.0.0)
|
318
305
|
rubysl-scanf (2.0.0)
|
@@ -331,7 +318,7 @@ GEM
|
|
331
318
|
rubysl-thwait (2.0.0)
|
332
319
|
rubysl-time (2.0.3)
|
333
320
|
rubysl-timeout (2.0.0)
|
334
|
-
rubysl-tmpdir (2.0.
|
321
|
+
rubysl-tmpdir (2.0.1)
|
335
322
|
rubysl-tsort (2.0.1)
|
336
323
|
rubysl-un (2.0.0)
|
337
324
|
rubysl-fileutils (~> 2.0)
|
@@ -342,43 +329,40 @@ GEM
|
|
342
329
|
rubysl-xmlrpc (2.0.0)
|
343
330
|
rubysl-yaml (2.0.4)
|
344
331
|
rubysl-zlib (2.0.1)
|
345
|
-
simplecov (0.
|
332
|
+
simplecov (0.9.1)
|
346
333
|
docile (~> 1.1.0)
|
347
|
-
multi_json
|
334
|
+
multi_json (~> 1.0)
|
348
335
|
simplecov-html (~> 0.8.0)
|
349
336
|
simplecov-html (0.8.0)
|
350
|
-
sprockets (2.
|
337
|
+
sprockets (2.12.3)
|
351
338
|
hike (~> 1.2)
|
352
339
|
multi_json (~> 1.0)
|
353
340
|
rack (~> 1.0)
|
354
341
|
tilt (~> 1.1, != 1.3.0)
|
355
|
-
sprockets-rails (2.0
|
342
|
+
sprockets-rails (2.2.0)
|
356
343
|
actionpack (>= 3.0)
|
357
344
|
activesupport (>= 3.0)
|
358
|
-
sprockets (
|
359
|
-
sqlite3 (1.3.
|
360
|
-
thor (0.
|
361
|
-
thread_safe (0.
|
362
|
-
atomic
|
345
|
+
sprockets (>= 2.8, < 4.0)
|
346
|
+
sqlite3 (1.3.10)
|
347
|
+
thor (0.19.1)
|
348
|
+
thread_safe (0.3.4)
|
363
349
|
tilt (1.4.1)
|
364
|
-
|
365
|
-
|
366
|
-
polyglot (>= 0.3.1)
|
367
|
-
tzinfo (0.3.38)
|
350
|
+
tzinfo (1.2.2)
|
351
|
+
thread_safe (~> 0.1)
|
368
352
|
|
369
353
|
PLATFORMS
|
370
354
|
ruby
|
371
355
|
|
372
356
|
DEPENDENCIES
|
373
|
-
bundler (>= 1.3
|
374
|
-
|
375
|
-
jeweler (>= 1.8.8)
|
357
|
+
bundler (>= 1.7.3)
|
358
|
+
jeweler (>= 2.0.1)
|
376
359
|
mocha (>= 0.14.0)
|
377
|
-
mysql2 (>= 0.3.
|
378
|
-
|
379
|
-
|
360
|
+
mysql2 (>= 0.3.16)
|
361
|
+
omniauth (>= 1.2.2)
|
362
|
+
pg (>= 0.17.1)
|
363
|
+
rails (>= 4.0.9)
|
380
364
|
rubysl
|
381
365
|
rubysl-bundler
|
382
366
|
rubysl-rake
|
383
367
|
simplecov
|
384
|
-
sqlite3 (>= 1.3.
|
368
|
+
sqlite3 (>= 1.3.9)
|
data/Gemfile.rails4
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem '
|
4
|
-
|
5
|
-
gem 'rails', '~> 4.0'
|
3
|
+
gem 'rails', '~> 4.0.9'
|
6
4
|
|
7
5
|
group :development do
|
8
|
-
gem 'bundler', '>= 1.
|
9
|
-
gem 'mocha', '>=
|
10
|
-
gem 'jeweler', '>=
|
6
|
+
gem 'bundler', '>= 1.6.2'
|
7
|
+
gem 'mocha', '>= 1.1.0'
|
8
|
+
gem 'jeweler', '>= 2.0.1'
|
11
9
|
gem 'simplecov', '>= 0'
|
12
|
-
gem 'mysql2', '>= 0.3.
|
13
|
-
gem '
|
14
|
-
gem '
|
10
|
+
gem 'mysql2', '>= 0.3.16'
|
11
|
+
gem 'omniauth', '>= 1.2.2'
|
12
|
+
gem 'pg', '>= 0.17.1'
|
13
|
+
gem 'sqlite3', '>= 1.3.10'
|
15
14
|
gem 'rubysl', platforms: [:rbx]
|
16
15
|
gem 'rubysl-bundler', platforms: [:rbx]
|
17
16
|
gem 'rubysl-rake', platforms: [:rbx]
|
@@ -1,17 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem '
|
4
|
-
|
5
|
-
gem 'rails', '~> 3.2.17'
|
3
|
+
gem 'rails', '~> 4.1.7'
|
6
4
|
|
7
5
|
group :development do
|
8
|
-
gem 'bundler', '>= 1.
|
9
|
-
gem 'mocha', '>= 1.
|
6
|
+
gem 'bundler', '>= 1.6.2'
|
7
|
+
gem 'mocha', '>= 1.1.0'
|
10
8
|
gem 'jeweler', '>= 2.0.1'
|
11
9
|
gem 'simplecov', '>= 0'
|
12
|
-
gem 'mysql2', '>= 0.3.
|
10
|
+
gem 'mysql2', '>= 0.3.16'
|
11
|
+
gem 'omniauth', '>= 1.2.2'
|
13
12
|
gem 'pg', '>= 0.17.1'
|
14
|
-
gem 'sqlite3', '>= 1.3.
|
13
|
+
gem 'sqlite3', '>= 1.3.10'
|
15
14
|
gem 'rubysl', platforms: [:rbx]
|
16
15
|
gem 'rubysl-bundler', platforms: [:rbx]
|
17
16
|
gem 'rubysl-rake', platforms: [:rbx]
|
data/Gemfile.rails42
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rails', '>= 4.2.0.beta2'
|
4
|
+
|
5
|
+
group :development do
|
6
|
+
gem 'bundler', '>= 1.6.2'
|
7
|
+
gem 'mocha', '>= 1.1.0'
|
8
|
+
gem 'jeweler', '>= 2.0.1'
|
9
|
+
gem 'simplecov', '>= 0'
|
10
|
+
gem 'mysql2', '>= 0.3.16'
|
11
|
+
gem 'omniauth', '>= 1.2.2'
|
12
|
+
gem 'pg', '>= 0.17.1'
|
13
|
+
gem 'sqlite3', '>= 1.3.10'
|
14
|
+
gem 'rubysl', platforms: [:rbx]
|
15
|
+
gem 'rubysl-bundler', platforms: [:rbx]
|
16
|
+
gem 'rubysl-rake', platforms: [:rbx]
|
17
|
+
end
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= authpwn_rails
|
2
2
|
|
3
|
-
User authentication for a Ruby on Rails
|
3
|
+
User authentication for a Ruby on Rails 4 application. Works with Facebook.
|
4
4
|
|
5
5
|
== Integration
|
6
6
|
|
@@ -9,7 +9,6 @@ Scaffold user accounts, and session controller views.
|
|
9
9
|
|
10
10
|
Wire authentication into your ApplicationController.
|
11
11
|
authenticates_using_session
|
12
|
-
authenticates_using_facebook
|
13
12
|
|
14
13
|
Note: the code inside the models and controllers is tucked away in the plug-in.
|
15
14
|
The scaffold models and controllers are there as extension points. You will be
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ Jeweler::Tasks.new do |gem|
|
|
16
16
|
gem.name = "authpwn_rails"
|
17
17
|
gem.homepage = "http://github.com/pwnall/authpwn_rails"
|
18
18
|
gem.license = "MIT"
|
19
|
-
gem.summary = %Q{User authentication for Rails
|
19
|
+
gem.summary = %Q{User authentication for Rails 4 applications.}
|
20
20
|
gem.description = %Q{Works with Facebook.}
|
21
21
|
gem.email = "victor@costan.us"
|
22
22
|
gem.authors = ["Victor Costan"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.17.0
|
@@ -5,13 +5,7 @@ module Credentials
|
|
5
5
|
class Email < ::Credential
|
6
6
|
# E-mail is a user-visible attribute, so we want good error messages for some
|
7
7
|
# of its validations. This means we must re-define them.
|
8
|
-
|
9
|
-
clear_validators!
|
10
|
-
else
|
11
|
-
# Backport clear_validators! from Rails 4.
|
12
|
-
reset_callbacks :validate
|
13
|
-
_validators.clear
|
14
|
-
end
|
8
|
+
clear_validators!
|
15
9
|
|
16
10
|
# The user whose email this is.
|
17
11
|
validates :user, presence: true
|
@@ -26,17 +20,20 @@ class Email < ::Credential
|
|
26
20
|
validates :key, presence: true, inclusion: { in: ['0', '1'] }
|
27
21
|
|
28
22
|
before_validation :set_verified_to_false, on: :create
|
29
|
-
#
|
23
|
+
# @private
|
24
|
+
# By default, e-mail addresses are not verified.
|
30
25
|
def set_verified_to_false
|
31
26
|
self.key ||= '0' if self.key.nil?
|
32
27
|
end
|
28
|
+
private :set_verified_to_false
|
33
29
|
|
34
30
|
# True if the e-mail has been verified via a token URL.
|
35
31
|
def verified?
|
36
32
|
key == '1'
|
37
33
|
end
|
38
34
|
|
39
|
-
#
|
35
|
+
# @param [Boolean] new_verified_value true if the e-mail has been verified
|
36
|
+
# via a token URL.
|
40
37
|
def verified=(new_verified_value)
|
41
38
|
self.key = new_verified_value ? '1' : '0'
|
42
39
|
new_verified_value ? true : false
|
@@ -59,34 +56,15 @@ class Email < ::Credential
|
|
59
56
|
user.auth_bounce_reason(credential) || user
|
60
57
|
end
|
61
58
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
#
|
68
|
-
#
|
69
|
-
|
70
|
-
|
71
|
-
# This method is likely to be used to kick off a complex authentication
|
72
|
-
# process, so it makes sense to pre-fetch the user's other credentials.
|
73
|
-
Credentials::Email.includes(user: :credentials).where(name: email).
|
74
|
-
references(:credential).first
|
75
|
-
end
|
76
|
-
rescue NameError
|
77
|
-
# Rails 3.
|
78
|
-
|
79
|
-
def self.with(email)
|
80
|
-
# This method is likely to be used to kick off a complex authentication
|
81
|
-
# process, so it makes sense to pre-fetch the user's other credentials.
|
82
|
-
Credentials::Email.includes(user: :credentials).where(name: email).
|
83
|
-
first
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
if ActiveRecord::Base.respond_to? :mass_assignment_sanitizer=
|
88
|
-
# Forms can only change the e-mail in the credential.
|
89
|
-
attr_accessible :email
|
59
|
+
# Locates the credential holding an e-mail address.
|
60
|
+
#
|
61
|
+
# Returns the User matching the given e-mail, or nil if the e-mail is not
|
62
|
+
# associated with any user.
|
63
|
+
def self.with(email)
|
64
|
+
# This method is likely to be used to kick off a complex authentication
|
65
|
+
# process, so it makes sense to pre-fetch the user's other credentials.
|
66
|
+
Credentials::Email.includes(user: :credentials).where(name: email).
|
67
|
+
references(:credential).first
|
90
68
|
end
|
91
69
|
end # class Credentials::Email
|
92
70
|
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# :namespace
|
2
|
+
module Credentials
|
3
|
+
|
4
|
+
# Associates an OmniAuth authentication method with the user account.
|
5
|
+
class OmniAuthUid < ::Credential
|
6
|
+
# Virtual attribute: the OmniAuth provider.
|
7
|
+
validates :provider, presence: true, length: 1..64
|
8
|
+
def provider
|
9
|
+
@omni_provider ||= name.split(',', 2).first
|
10
|
+
end
|
11
|
+
def provider=(new_provider)
|
12
|
+
@omni_provider = new_provider
|
13
|
+
self.name = "#{@omni_provider},#{@omni_uid}"
|
14
|
+
end
|
15
|
+
|
16
|
+
# Virtual attribute: the UID generated by the OmniAuth provider.
|
17
|
+
validates :uid, presence: true, length: 1..128
|
18
|
+
def uid
|
19
|
+
@omni_uid ||= name.split(',', 2).last
|
20
|
+
end
|
21
|
+
def uid=(new_uid)
|
22
|
+
@omni_uid = new_uid
|
23
|
+
self.name = "#{@omni_provider},#{@omni_uid}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# '1' unless this authentication method is blocked.
|
27
|
+
validates :key, presence: true, inclusion: { in: ['0', '1'] }
|
28
|
+
|
29
|
+
before_validation :set_blocked_to_false, on: :create
|
30
|
+
# @private
|
31
|
+
# By default, OmniAuth authentication methods are not blocked.
|
32
|
+
def set_blocked_to_false
|
33
|
+
self.key ||= '1' if self.key.nil?
|
34
|
+
end
|
35
|
+
private :set_blocked_to_false
|
36
|
+
|
37
|
+
# @return [Boolean] true if the authentication method has been blocked
|
38
|
+
def blocked?
|
39
|
+
key == '0'
|
40
|
+
end
|
41
|
+
|
42
|
+
# @param [Boolean] new_blocked_value true if this authentication method has
|
43
|
+
# been blocked
|
44
|
+
def blocked=(new_blocked_value)
|
45
|
+
self.key = new_blocked_value ? '0' : '1'
|
46
|
+
new_blocked_value ? true : false
|
47
|
+
end
|
48
|
+
|
49
|
+
# Locates a user given an OmniAuth hash.
|
50
|
+
#
|
51
|
+
# @return [User, Symbol] the authenticated User instance, or a symbol
|
52
|
+
# indicating the reason why the (potentially valid) hash was rejected
|
53
|
+
def self.authenticate(omniauth_hash)
|
54
|
+
credential = with omniauth_hash
|
55
|
+
if credential
|
56
|
+
user = credential.user
|
57
|
+
else
|
58
|
+
user = User.related_to_omniauth omniauth_hash
|
59
|
+
unless user
|
60
|
+
user = User.create_from_omniauth omniauth_hash
|
61
|
+
end
|
62
|
+
|
63
|
+
# If a user was found/created here, attach an OmniAuth credential to the
|
64
|
+
# user, so it always survives.
|
65
|
+
if user
|
66
|
+
credential = Credentials::OmniAuthUid.create! user: user,
|
67
|
+
provider: omniauth_hash['provider'], uid: omniauth_hash['uid']
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
return :invalid unless credential
|
72
|
+
return :blocked if credential.blocked?
|
73
|
+
user.auth_bounce_reason(credential) || user
|
74
|
+
end
|
75
|
+
|
76
|
+
# Locates a user given an OmniAuth hash.
|
77
|
+
#
|
78
|
+
# This returns a user
|
79
|
+
#
|
80
|
+
# @return [User] the User matching the given hash, or nil if the hash is not
|
81
|
+
# associated with any user
|
82
|
+
def self.with(omniauth_hash)
|
83
|
+
Credentials::OmniAuthUid.where(name: name_from_omniauth(omniauth_hash)).
|
84
|
+
first
|
85
|
+
end
|
86
|
+
|
87
|
+
# @param [Hash] omniauth_hash the hash given in the omniauth.auth Rack
|
88
|
+
# environment variable
|
89
|
+
# @return [String] the credential name derived from the hash
|
90
|
+
def self.name_from_omniauth(omniauth_hash)
|
91
|
+
"#{omniauth_hash['provider']},#{omniauth_hash['uid']}"
|
92
|
+
end
|
93
|
+
end # class Credentials::Email
|
94
|
+
|
95
|
+
end # namespace Credentials
|
96
|
+
|
@@ -80,11 +80,6 @@ class Password < ::Credential
|
|
80
80
|
def self.random_salt
|
81
81
|
[(0...12).map { |i| 1 + rand(255) }.pack('C*')].pack('m').strip
|
82
82
|
end
|
83
|
-
|
84
|
-
if ActiveRecord::Base.respond_to? :mass_assignment_sanitizer=
|
85
|
-
# Forms can only change the plain-text password fields.
|
86
|
-
attr_accessible :old_password, :password, :password_confirmation
|
87
|
-
end
|
88
83
|
end # class Credentials::Password
|
89
84
|
|
90
85
|
end # namespace Credentials
|