devise_ott 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +2 -2
- data/Gemfile.lock +99 -72
- data/certs/igagnidz.pem +21 -0
- data/devise_ott.gemspec +4 -0
- data/lib/devise_ott/strategies/ott_authetication.rb +2 -4
- data/lib/devise_ott/tokens.rb +1 -0
- data/lib/devise_ott/version.rb +1 -1
- data/test/devise_ott_tokens_test.rb +62 -0
- data/test/rails_app/config/environments/test.rb +5 -0
- data/test/support/seed.rb +4 -0
- data/test/test_helper.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8508276fc71bad33d69f02161674540030945e2f
|
4
|
+
data.tar.gz: fa4229d5e4aaf811ef8e0642ce0edad040b8a31a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dfdf0b6df1d047645528ad8143471e3e99de6237a9b9e8d44e311b38490b4ddaac4b1f1043923de7c18e35e7ab64834955d5e0c8879b791530ee30d354a840d
|
7
|
+
data.tar.gz: 597de8875e49b95be1c2a5137e916d7c3e94a25a622b112d45595968adb988813803be679e0c59b6333c81d93f0890c81d8d8e1fa93309281d8582a633088b3c
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.2.0
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,114 +1,141 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
devise_ott (0.0.
|
4
|
+
devise_ott (0.0.4)
|
5
5
|
devise
|
6
6
|
redis
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionmailer (4.0
|
12
|
-
actionpack (= 4.0
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
actionmailer (4.2.0)
|
12
|
+
actionpack (= 4.2.0)
|
13
|
+
actionview (= 4.2.0)
|
14
|
+
activejob (= 4.2.0)
|
15
|
+
mail (~> 2.5, >= 2.5.4)
|
16
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
17
|
+
actionpack (4.2.0)
|
18
|
+
actionview (= 4.2.0)
|
19
|
+
activesupport (= 4.2.0)
|
20
|
+
rack (~> 1.6.0)
|
19
21
|
rack-test (~> 0.6.2)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
22
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
23
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
24
|
+
actionview (4.2.0)
|
25
|
+
activesupport (= 4.2.0)
|
26
|
+
builder (~> 3.1)
|
27
|
+
erubis (~> 2.7.0)
|
28
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
29
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
30
|
+
activejob (4.2.0)
|
31
|
+
activesupport (= 4.2.0)
|
32
|
+
globalid (>= 0.3.0)
|
33
|
+
activemodel (4.2.0)
|
34
|
+
activesupport (= 4.2.0)
|
35
|
+
builder (~> 3.1)
|
36
|
+
activerecord (4.2.0)
|
37
|
+
activemodel (= 4.2.0)
|
38
|
+
activesupport (= 4.2.0)
|
39
|
+
arel (~> 6.0)
|
40
|
+
activesupport (4.2.0)
|
41
|
+
i18n (~> 0.7)
|
42
|
+
json (~> 1.7, >= 1.7.7)
|
43
|
+
minitest (~> 5.1)
|
44
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
45
|
+
tzinfo (~> 1.1)
|
46
|
+
arel (6.0.0)
|
47
|
+
bcrypt (3.1.9)
|
48
|
+
builder (3.2.2)
|
49
|
+
coveralls (0.7.2)
|
40
50
|
multi_json (~> 1.3)
|
41
|
-
rest-client
|
51
|
+
rest-client (= 1.6.7)
|
42
52
|
simplecov (>= 0.7)
|
43
|
-
term-ansicolor
|
44
|
-
thor
|
45
|
-
devise (3.
|
46
|
-
bcrypt
|
53
|
+
term-ansicolor (= 1.2.2)
|
54
|
+
thor (= 0.18.1)
|
55
|
+
devise (3.4.1)
|
56
|
+
bcrypt (~> 3.0)
|
47
57
|
orm_adapter (~> 0.1)
|
48
58
|
railties (>= 3.2.6, < 5)
|
59
|
+
responders
|
49
60
|
thread_safe (~> 0.1)
|
50
61
|
warden (~> 1.2.3)
|
51
|
-
docile (1.1.
|
62
|
+
docile (1.1.5)
|
52
63
|
erubis (2.7.0)
|
64
|
+
globalid (0.3.0)
|
65
|
+
activesupport (>= 4.1.0)
|
53
66
|
hike (1.2.3)
|
54
|
-
i18n (0.
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
67
|
+
i18n (0.7.0)
|
68
|
+
json (1.8.1)
|
69
|
+
loofah (2.0.1)
|
70
|
+
nokogiri (>= 1.5.9)
|
71
|
+
mail (2.6.3)
|
72
|
+
mime-types (>= 1.16, < 3)
|
73
|
+
mime-types (2.4.3)
|
74
|
+
mini_portile (0.6.2)
|
75
|
+
minitest (5.5.0)
|
76
|
+
minitest-rails (2.1.1)
|
77
|
+
minitest (~> 5.4)
|
78
|
+
railties (~> 4.1)
|
79
|
+
multi_json (1.10.1)
|
80
|
+
nokogiri (1.6.5)
|
81
|
+
mini_portile (~> 0.6.0)
|
64
82
|
orm_adapter (0.5.0)
|
65
|
-
|
66
|
-
rack (1.5.2)
|
83
|
+
rack (1.6.0)
|
67
84
|
rack-test (0.6.2)
|
68
85
|
rack (>= 1.0)
|
69
|
-
rails (4.0
|
70
|
-
actionmailer (= 4.0
|
71
|
-
actionpack (= 4.0
|
72
|
-
|
73
|
-
|
86
|
+
rails (4.2.0)
|
87
|
+
actionmailer (= 4.2.0)
|
88
|
+
actionpack (= 4.2.0)
|
89
|
+
actionview (= 4.2.0)
|
90
|
+
activejob (= 4.2.0)
|
91
|
+
activemodel (= 4.2.0)
|
92
|
+
activerecord (= 4.2.0)
|
93
|
+
activesupport (= 4.2.0)
|
74
94
|
bundler (>= 1.3.0, < 2.0)
|
75
|
-
railties (= 4.0
|
76
|
-
sprockets-rails
|
77
|
-
|
78
|
-
|
79
|
-
|
95
|
+
railties (= 4.2.0)
|
96
|
+
sprockets-rails
|
97
|
+
rails-deprecated_sanitizer (1.0.3)
|
98
|
+
activesupport (>= 4.2.0.alpha)
|
99
|
+
rails-dom-testing (1.0.5)
|
100
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
101
|
+
nokogiri (~> 1.6.0)
|
102
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
103
|
+
rails-html-sanitizer (1.0.1)
|
104
|
+
loofah (~> 2.0)
|
105
|
+
railties (4.2.0)
|
106
|
+
actionpack (= 4.2.0)
|
107
|
+
activesupport (= 4.2.0)
|
80
108
|
rake (>= 0.8.7)
|
81
109
|
thor (>= 0.18.1, < 2.0)
|
82
|
-
rake (10.
|
83
|
-
redis (3.0
|
110
|
+
rake (10.4.2)
|
111
|
+
redis (3.2.0)
|
112
|
+
responders (2.0.2)
|
113
|
+
railties (>= 4.2.0.alpha, < 5)
|
84
114
|
rest-client (1.6.7)
|
85
115
|
mime-types (>= 1.16)
|
86
|
-
simplecov (0.
|
116
|
+
simplecov (0.9.1)
|
87
117
|
docile (~> 1.1.0)
|
88
|
-
multi_json
|
118
|
+
multi_json (~> 1.0)
|
89
119
|
simplecov-html (~> 0.8.0)
|
90
120
|
simplecov-html (0.8.0)
|
91
|
-
sprockets (2.
|
121
|
+
sprockets (2.12.3)
|
92
122
|
hike (~> 1.2)
|
93
123
|
multi_json (~> 1.0)
|
94
124
|
rack (~> 1.0)
|
95
125
|
tilt (~> 1.1, != 1.3.0)
|
96
|
-
sprockets-rails (2.
|
126
|
+
sprockets-rails (2.2.2)
|
97
127
|
actionpack (>= 3.0)
|
98
128
|
activesupport (>= 3.0)
|
99
|
-
sprockets (
|
100
|
-
sqlite3 (1.3.
|
129
|
+
sprockets (>= 2.8, < 4.0)
|
130
|
+
sqlite3 (1.3.10)
|
101
131
|
term-ansicolor (1.2.2)
|
102
132
|
tins (~> 0.8)
|
103
133
|
thor (0.18.1)
|
104
|
-
thread_safe (0.
|
105
|
-
atomic
|
134
|
+
thread_safe (0.3.4)
|
106
135
|
tilt (1.4.1)
|
107
|
-
tins (0.13.
|
108
|
-
|
109
|
-
|
110
|
-
polyglot (>= 0.3.1)
|
111
|
-
tzinfo (0.3.38)
|
136
|
+
tins (0.13.2)
|
137
|
+
tzinfo (1.2.2)
|
138
|
+
thread_safe (~> 0.1)
|
112
139
|
warden (1.2.3)
|
113
140
|
rack (>= 1.0)
|
114
141
|
|
data/certs/igagnidz.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhpZ2Fn
|
3
|
+
bmlkejEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTE1MDEwODE5MzIwOFoXDTE2MDEwODE5MzIwOFowPzERMA8GA1UEAwwIaWdh
|
5
|
+
Z25pZHoxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ0cv4cvT8KGKoE/GQkE
|
7
|
+
cmpazFdWcsFo3wB0ft2o+7Do3aEQr277pP/LS7rLmS2c9WB5Xc3cKmxBJ9KJISla
|
8
|
+
AwqMy+X7QPK1r/eSdX5vtEG9UzhKHoZ5OA/Vp0gndRpxx4irCDA6JCvoukMkqQ4C
|
9
|
+
nglrIZPFj7zl9JvcefT/LrgSdiwvoiuO8iqMiL51FlqwkUdfKrh4hPvMh3RWMj/p
|
10
|
+
GTGnUURf0M+2CqRAGZtdb/lb8Kd1Vv0Cnv4iD8fapBRbBHZPgvx3+bVAeRIZShJ8
|
11
|
+
WUcNn9pq+f33bdffP/uRgP7y/CxfsUBdw/8ah09GhN4LNKEqxidxf6hINmHjwPAT
|
12
|
+
glsCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDmc
|
13
|
+
zYuJzjhQ/s5LMjqRzCHX30SSMB0GA1UdEQQWMBSBEmlnYWduaWR6QGdtYWlsLmNv
|
14
|
+
bTAdBgNVHRIEFjAUgRJpZ2FnbmlkekBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
15
|
+
ggEBAEmZDywFynEyzEU+QBMGRi1eQOkqvuRClgsafPYSzBJJBjfdkPdBex0otrYw
|
16
|
+
nPBa0QJ16HOkQneP6+Yigdk8hRYJslCwd23U7Wp99pt3Y9GttWqz/Dxv+9vSMdk/
|
17
|
+
jXfPW2TKhIb4sLM4maZn9iBs8ZA3nWv2pE0qnwBEIl9G7Dv+D4qLt5nLZklTWwN6
|
18
|
+
A6qAwUctdSvdK5VuKmwOYHAWP513GniqD3xvniFibU9a8Af3KQ6IZQiRT5NWevpy
|
19
|
+
tjvVd764uFwJPlAjClP53jeL57tIcc7deTQGo60vZO7PGu2lXaA+fb+/XKvjIM8F
|
20
|
+
36lNHFVYlpW6ipD6uwf6dHgmKsM=
|
21
|
+
-----END CERTIFICATE-----
|
data/devise_ott.gemspec
CHANGED
@@ -18,6 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
+
# Dont sing yet.
|
22
|
+
# spec.cert_chain = ['certs/igagnidz.pem']
|
23
|
+
# spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
|
24
|
+
|
21
25
|
spec.add_dependency 'devise'
|
22
26
|
spec.add_dependency 'redis'
|
23
27
|
|
@@ -7,9 +7,6 @@ module DeviseOtt
|
|
7
7
|
|
8
8
|
def authenticate!
|
9
9
|
ott_token = params[:ott_token]
|
10
|
-
|
11
|
-
return unless mapping.to.respond_to?(:find_for_ott_authentication) # Dont try to authenticate if module is not included
|
12
|
-
|
13
10
|
resource = mapping.to.find_for_ott_authentication(ott_token)
|
14
11
|
|
15
12
|
return unless resource
|
@@ -33,9 +30,10 @@ module DeviseOtt
|
|
33
30
|
# Check if this is strategy is valid for ott authentication by:
|
34
31
|
#
|
35
32
|
# * If the ott token exists;
|
33
|
+
# * If ott module is included
|
36
34
|
#
|
37
35
|
def valid_for_ott_auth?
|
38
|
-
params[:ott_token].present?
|
36
|
+
params[:ott_token].present? && mapping.to.respond_to?(:find_for_ott_authentication)
|
39
37
|
end
|
40
38
|
end
|
41
39
|
end
|
data/lib/devise_ott/tokens.rb
CHANGED
data/lib/devise_ott/version.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DeviseOttTest < ActiveSupport::TestCase
|
4
|
+
test 'redis is present' do
|
5
|
+
class DeviseOtt::Tokens;attr_reader :redis;end
|
6
|
+
|
7
|
+
assert_equal('PONG', DeviseOtt::Tokens.instance.redis.ping)
|
8
|
+
end
|
9
|
+
|
10
|
+
test 'redis shuts down after finalize' do
|
11
|
+
class DeviseOtt::Tokens;class << self;attr_accessor :redis;end;end
|
12
|
+
DeviseOtt::Tokens.redis = DeviseOtt::Tokens.instance.redis
|
13
|
+
|
14
|
+
assert_nothing_raised { DeviseOtt::Tokens.finalize }
|
15
|
+
assert_equal('OK', DeviseOtt::Tokens.finalize)
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'redis revokes' do
|
19
|
+
assert_equal(1, DeviseOtt::Tokens.instance.revoke('random_token'))
|
20
|
+
DeviseOtt::Tokens.instance.register('random_token', 'test1@example.com', 1040, 100100)
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'accesses token for a given email if allowed' do
|
24
|
+
assert_equal(true, DeviseOtt::Tokens.instance.access('random_token', 'test1@example.com'))
|
25
|
+
end
|
26
|
+
|
27
|
+
test 'deny token access if not allowed' do
|
28
|
+
assert_equal(false, DeviseOtt::Tokens.instance.access('random_token', 'test2@example.com'))
|
29
|
+
end
|
30
|
+
|
31
|
+
test 'returns correct email if allowed' do
|
32
|
+
DeviseOtt::Tokens.instance.access('random_token', 'test1@example.com')
|
33
|
+
assert_equal('test1@example.com', DeviseOtt::Tokens.instance.email('random_token'))
|
34
|
+
end
|
35
|
+
|
36
|
+
test 'denies email access unless allowed' do
|
37
|
+
DeviseOtt::Tokens.instance.access('random_token', 'test1@example.com')
|
38
|
+
assert_equal(nil, DeviseOtt::Tokens.instance.email('random_token_'))
|
39
|
+
end
|
40
|
+
|
41
|
+
test 'loads config if allowed' do
|
42
|
+
class DeviseOtt::Tokens;public :load_config;end
|
43
|
+
assert_not_nil(DeviseOtt::Tokens.instance.load_config('random_token'))
|
44
|
+
end
|
45
|
+
|
46
|
+
test 'does not load config if disallowed' do
|
47
|
+
class DeviseOtt::Tokens;public :load_config;end
|
48
|
+
assert_equal(nil, DeviseOtt::Tokens.instance.load_config('random_token_'))
|
49
|
+
end
|
50
|
+
|
51
|
+
test 'returns ttl if allowed' do
|
52
|
+
class DeviseOtt::Tokens;public :ttl;end
|
53
|
+
ttl = DeviseOtt::Tokens.instance.ttl('random_token')
|
54
|
+
assert_send([ttl, :is_a?, Numeric])
|
55
|
+
assert_operator(ttl, :>, 0)
|
56
|
+
end
|
57
|
+
|
58
|
+
test 'does not return ttl unless allowed' do
|
59
|
+
class DeviseOtt::Tokens;public :ttl;end
|
60
|
+
refute_operator(DeviseOtt::Tokens.instance.ttl('random_token_'), :>, 0)
|
61
|
+
end
|
62
|
+
end
|
@@ -7,6 +7,11 @@ RailsApp::Application.configure do
|
|
7
7
|
# and recreated between test runs. Don't rely on the data there!
|
8
8
|
config.cache_classes = true
|
9
9
|
|
10
|
+
# Rails 5 deprecation warning
|
11
|
+
Rails.application.configure do
|
12
|
+
config.active_support.test_order = :sorted
|
13
|
+
end
|
14
|
+
|
10
15
|
# Show full error reports and disable caching
|
11
16
|
config.consider_all_requests_local = true
|
12
17
|
config.action_controller.perform_caching = false
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_ott
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iuri Gagnidze
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: devise
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- LICENSE.txt
|
139
139
|
- README.rdoc
|
140
140
|
- Rakefile
|
141
|
+
- certs/igagnidz.pem
|
141
142
|
- devise_ott.gemspec
|
142
143
|
- lib/devise_ott.rb
|
143
144
|
- lib/devise_ott/models.rb
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- lib/devise_ott/tokens.rb
|
148
149
|
- lib/devise_ott/version.rb
|
149
150
|
- test/devise_ott_test.rb
|
151
|
+
- test/devise_ott_tokens_test.rb
|
150
152
|
- test/rails_app/app/controllers/application_controller.rb
|
151
153
|
- test/rails_app/config/application.rb
|
152
154
|
- test/rails_app/config/database.yml
|
@@ -157,6 +159,7 @@ files:
|
|
157
159
|
- test/rails_app/config/routes.rb
|
158
160
|
- test/support/models.rb
|
159
161
|
- test/support/schema.rb
|
162
|
+
- test/support/seed.rb
|
160
163
|
- test/test_helper.rb
|
161
164
|
homepage: https://github.com/igagnidz/devise_ott
|
162
165
|
licenses:
|
@@ -178,12 +181,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
181
|
version: '0'
|
179
182
|
requirements: []
|
180
183
|
rubyforge_project:
|
181
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.4.5
|
182
185
|
signing_key:
|
183
186
|
specification_version: 4
|
184
187
|
summary: Adds one time token authentication to devise
|
185
188
|
test_files:
|
186
189
|
- test/devise_ott_test.rb
|
190
|
+
- test/devise_ott_tokens_test.rb
|
187
191
|
- test/rails_app/app/controllers/application_controller.rb
|
188
192
|
- test/rails_app/config/application.rb
|
189
193
|
- test/rails_app/config/database.yml
|
@@ -194,4 +198,5 @@ test_files:
|
|
194
198
|
- test/rails_app/config/routes.rb
|
195
199
|
- test/support/models.rb
|
196
200
|
- test/support/schema.rb
|
201
|
+
- test/support/seed.rb
|
197
202
|
- test/test_helper.rb
|