registrar 0.0.1.alpha → 0.0.2.alpha
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/README.md +31 -2
- data/Rakefile +8 -0
- data/lib/registrar.rb +2 -2
- data/lib/registrar/adapter/omni_auth.rb +20 -31
- data/lib/registrar/gatekeeper.rb +82 -0
- data/lib/registrar/{profile_builder.rb → profile_factory.rb} +3 -3
- data/lib/registrar/version.rb +1 -1
- data/registrar.gemspec +4 -0
- data/spec/fixtures/omniauth_1_0_auth_hash_schema +0 -0
- data/spec/gatekeeper_spec.rb +58 -0
- data/spec/omni_auth_adapter_spec.rb +98 -0
- data/spec/profile_factory_spec.rb +113 -0
- data/spec/spec_helper.rb +8 -0
- metadata +71 -5
- data/lib/registrar/profile_gateway_stub.rb +0 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9f413572ed2bac2448931df73018fadc01778795
|
|
4
|
+
data.tar.gz: 090638ae3e238888f75927ed70da14e891ff81d2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41717567d87d943da6342e616257369ae6e2f43f91ffa31faf8e293fa90c01451df6224a642a32758d87f9488ccbb44e4ada0e50e95c3b023762826c2bfd7ea6
|
|
7
|
+
data.tar.gz: 1e82ad6b625df0038bf959334525d3909e1467b4e148f7c287eeb811b1a9bfc54a1f5d24f8e2c3b12346bb14dd40837dfc3f0f8251190c2741097497a59ef858
|
data/README.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
+
[github]: https://github.com/JanOwiesniak/registrar
|
|
2
|
+
[doc]: http://rubydoc.info/github/JanOwiesniak/registrar/master/file/README.md
|
|
3
|
+
[gem]: https://rubygems.org/gems/registrar
|
|
4
|
+
[gem-badge]: https://img.shields.io/gem/v/registrar.svg
|
|
5
|
+
[rack-playground]: https://github.com/JanOwiesniak/rack-playground/blob/master/lib/app_builder.rb
|
|
6
|
+
|
|
1
7
|
# Registrar
|
|
2
8
|
|
|
9
|
+
[![Gem Version][gem-badge]][gem]
|
|
10
|
+
|
|
11
|
+
[Gem][gem] |
|
|
12
|
+
[Source][github] |
|
|
13
|
+
[Documentation][doc]
|
|
14
|
+
|
|
15
|
+
# Description
|
|
16
|
+
|
|
3
17
|
Registrar standardizes Authentication Responses through Rack Middleware and works well with common authentication mechanisms like OmniAuth.
|
|
4
18
|
|
|
5
19
|
## Installation
|
|
@@ -20,11 +34,26 @@ Or install it yourself as:
|
|
|
20
34
|
|
|
21
35
|
## Usage
|
|
22
36
|
|
|
23
|
-
|
|
37
|
+
Click [here][rack-playground] to see how to use the different components.
|
|
38
|
+
|
|
39
|
+
## Short summary of the components
|
|
40
|
+
|
|
41
|
+
### Gatekeeper
|
|
42
|
+
|
|
43
|
+
It normalizes the interface.
|
|
44
|
+
|
|
45
|
+
## Adapter
|
|
46
|
+
|
|
47
|
+
It normalizes the response.
|
|
48
|
+
|
|
49
|
+
## ProfileFactory
|
|
50
|
+
|
|
51
|
+
It passes the normalized response to a profile factory and stores a hash version
|
|
52
|
+
of the returned object in the env.
|
|
24
53
|
|
|
25
54
|
## Contributing
|
|
26
55
|
|
|
27
|
-
1. Fork it ( https://github.com/
|
|
56
|
+
1. Fork it ( https://github.com/JanOwiesniak/registrar/fork )
|
|
28
57
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
29
58
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
30
59
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/Rakefile
CHANGED
data/lib/registrar.rb
CHANGED
|
@@ -13,52 +13,41 @@ module Registrar
|
|
|
13
13
|
private
|
|
14
14
|
|
|
15
15
|
def try_to_normalize_auth(env)
|
|
16
|
-
if env[
|
|
17
|
-
env['registrar.auth'] = AuthNormalizer.normalized(
|
|
16
|
+
if auth = env['omniauth.auth']
|
|
17
|
+
env['registrar.auth'] = AuthNormalizer.normalized(auth)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
class AuthNormalizer
|
|
22
|
-
def self.normalized(
|
|
23
|
-
|
|
24
|
-
normalizer.send(:normalize)
|
|
25
|
-
normalizer.send(:normalized)
|
|
22
|
+
def self.normalized(auth)
|
|
23
|
+
new(auth).normalize
|
|
26
24
|
end
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
attr_reader :auth, :normalized
|
|
31
|
-
|
|
32
|
-
def initialize(env)
|
|
33
|
-
@auth = env["omniauth.auth"]
|
|
34
|
-
@normalized = {}
|
|
26
|
+
def initialize(auth)
|
|
27
|
+
@auth = auth
|
|
35
28
|
end
|
|
36
29
|
|
|
37
30
|
def normalize
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
normalized = {}
|
|
32
|
+
normalized['provider'] = normalize_provider
|
|
33
|
+
normalized['profile'] = normalize_profile
|
|
34
|
+
normalized
|
|
40
35
|
end
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
attr_reader :auth
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
def normalize_provider
|
|
42
|
+
{
|
|
43
|
+
'name' => auth['provider'],
|
|
44
|
+
'uid' => auth['uid'],
|
|
45
|
+
'access_token' => auth['credentials']['token']
|
|
46
|
+
}
|
|
52
47
|
end
|
|
53
48
|
|
|
54
49
|
def normalize_profile
|
|
55
|
-
|
|
56
|
-
'profile' => {}
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
auth["info"].to_hash.each_pair do |k, v|
|
|
60
|
-
normalized['profile'][k] = v
|
|
61
|
-
end
|
|
50
|
+
auth['info'].to_hash
|
|
62
51
|
end
|
|
63
52
|
end
|
|
64
53
|
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
module Registrar
|
|
2
|
+
class Gatekeeper
|
|
3
|
+
def initialize(app, &block)
|
|
4
|
+
@app = app
|
|
5
|
+
@dispatcher = Dispatcher.new
|
|
6
|
+
try_to_eval_dispatcher(&block)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
if dispatch?(env)
|
|
11
|
+
dispatch(env).tap do |d|
|
|
12
|
+
env["PATH_INFO"] = d.request_path
|
|
13
|
+
env["REQUEST_METHOD"] = d.request_method
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
attr_reader :dispatcher
|
|
23
|
+
|
|
24
|
+
def try_to_eval_dispatcher(&block)
|
|
25
|
+
if block_given?
|
|
26
|
+
dispatcher.instance_eval &block
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def dispatch?(env)
|
|
31
|
+
!!dispatch(env)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def dispatch(env)
|
|
35
|
+
return @dispatch if @dispatch
|
|
36
|
+
|
|
37
|
+
request_path = env["PATH_INFO"]
|
|
38
|
+
request_method = env["REQUEST_METHOD"]
|
|
39
|
+
uid = "#{request_path}_#{request_method}"
|
|
40
|
+
|
|
41
|
+
@dispatch = dispatcher.dispatches[uid]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class Dispatcher
|
|
45
|
+
def initialize
|
|
46
|
+
@dispatches = {}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def get(from, to)
|
|
50
|
+
add_dispatch(from, to, "GET")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def post(from, to)
|
|
54
|
+
add_dispatch(from, to, "POST")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def dispatches
|
|
58
|
+
@dispatches
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
private
|
|
62
|
+
|
|
63
|
+
def add_dispatch(from, to, request_method)
|
|
64
|
+
lookup_key = "#{from}_#{request_method}"
|
|
65
|
+
@dispatches[lookup_key] = build_dispatch(to, request_method)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def build_dispatch(request_path, request_method)
|
|
69
|
+
Dispatch.new(request_path, request_method)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class Dispatch
|
|
73
|
+
attr_reader :request_path, :request_method
|
|
74
|
+
|
|
75
|
+
def initialize(request_path, request_method)
|
|
76
|
+
@request_path = request_path
|
|
77
|
+
@request_method = request_method
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
module Registrar
|
|
2
|
-
class
|
|
2
|
+
class ProfileFactory
|
|
3
3
|
def initialize(app, callable)
|
|
4
4
|
@app = app
|
|
5
5
|
@callable = callable
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def call(env)
|
|
9
|
-
|
|
9
|
+
build_profile(env)
|
|
10
10
|
@app.call(env)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
private
|
|
14
14
|
|
|
15
|
-
def
|
|
15
|
+
def build_profile(env)
|
|
16
16
|
if auth_hash = env['registrar.auth']
|
|
17
17
|
profile = @callable.call(auth_hash)
|
|
18
18
|
env['registrar.profile'] = profile.to_hash
|
data/lib/registrar/version.rb
CHANGED
data/registrar.gemspec
CHANGED
|
@@ -20,4 +20,8 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
+
spec.add_development_dependency "rack"
|
|
24
|
+
spec.add_development_dependency "rack-test"
|
|
25
|
+
spec.add_development_dependency "minitest"
|
|
26
|
+
spec.add_development_dependency "omniauth"
|
|
23
27
|
end
|
|
Binary file
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class GatekeeperSpec < Spec
|
|
4
|
+
it 'delegates get requests to the defined endpoints' do
|
|
5
|
+
get '/login/base'
|
|
6
|
+
|
|
7
|
+
assert_path '/auth/developer'
|
|
8
|
+
assert_method 'GET'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'delegates post requests to the defined endpoints' do
|
|
12
|
+
post '/login/base'
|
|
13
|
+
|
|
14
|
+
assert_path '/auth/developer/callback'
|
|
15
|
+
assert_method 'POST'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def assert_path(request_path)
|
|
21
|
+
assert_equal request_path, env["PATH_INFO"]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def assert_method(request_method)
|
|
25
|
+
assert_equal request_method, env["REQUEST_METHOD"]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def env
|
|
29
|
+
last_request.env
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def response
|
|
33
|
+
last_response
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def app
|
|
37
|
+
@app ||= build_app
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def build_app
|
|
41
|
+
builder.to_app
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def builder
|
|
45
|
+
Rack::Builder.new do
|
|
46
|
+
use Registrar::Gatekeeper do
|
|
47
|
+
get '/login/base', '/auth/developer'
|
|
48
|
+
post '/login/base', '/auth/developer/callback'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
app = Proc.new do |env|
|
|
52
|
+
['200', {'Content-Type' => 'text/html'}, ['A barebones rack app.']]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
run app
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'omniauth'
|
|
3
|
+
|
|
4
|
+
class OmniAuthAdapterSpec < Spec
|
|
5
|
+
it 'normalizes OmniAuth Auth Hash Schema 1.0 and later' do
|
|
6
|
+
get '/'
|
|
7
|
+
assert_normalizes_auth env
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def assert_normalizes_auth(env)
|
|
13
|
+
assert_normalizes_provider(env)
|
|
14
|
+
assert_normalizes_profile(env)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def assert_normalizes_provider(env)
|
|
18
|
+
assert_equal(
|
|
19
|
+
{
|
|
20
|
+
'name' => 'facebook',
|
|
21
|
+
'uid' => '100000100277322',
|
|
22
|
+
'access_token' => 'CAACEdEose0cBAGxad8Y14t3tu3kMlA3SgnxZBfZCQcSyb9hnn1kNZCpBDzZBIpNNpYSsJTFDs4Ar4ZBZBoMRRAzzFJGhPW4mtM1Rmm62BsQiZCkpJpG1pAC8tslbD3s3BiSYEGdjhOZBt7QVHZB1Sea14ojiZAOZBhFWi1BZBfIGgRI3El6FmEYMKPQ2XgJR0ottKdTQBR1ia2NuZABxpsAMYY8Sb'
|
|
23
|
+
}, env['registrar.auth']['provider'])
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def assert_normalizes_profile(env)
|
|
27
|
+
assert_equal(
|
|
28
|
+
{
|
|
29
|
+
"name" => "Jan Ow",
|
|
30
|
+
"first_name" => "Jan",
|
|
31
|
+
"last_name" => "Ow",
|
|
32
|
+
"image" => "http://graph.facebook.com/100000100277322/picture",
|
|
33
|
+
"urls" => {
|
|
34
|
+
"Facebook" => "http://www.facebook.com/100000100277322"
|
|
35
|
+
},
|
|
36
|
+
"verified" => true
|
|
37
|
+
}, env['registrar.auth']['profile'])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def env
|
|
41
|
+
last_request.env
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def response
|
|
45
|
+
last_response
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def app
|
|
49
|
+
@app ||= build_app
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def build_app
|
|
53
|
+
builder.to_app
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class OmniAuthFacebookStub
|
|
57
|
+
def initialize(app)
|
|
58
|
+
@app = app
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def call(env)
|
|
62
|
+
env['omniauth.auth'] = stubbed_auth_response
|
|
63
|
+
@app.call(env)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def stubbed_auth_response
|
|
69
|
+
Marshal.load(auth_response_file)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def auth_response_file
|
|
73
|
+
File.read(auth_response_path)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def auth_response_path
|
|
77
|
+
"#{current_path}/fixtures/omniauth_1_0_auth_hash_schema"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def current_path
|
|
81
|
+
File.expand_path(File.dirname(__FILE__))
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def builder
|
|
86
|
+
Rack::Builder.new do
|
|
87
|
+
use OmniAuthFacebookStub
|
|
88
|
+
|
|
89
|
+
use Registrar::Adapter::OmniAuth
|
|
90
|
+
|
|
91
|
+
app = Proc.new do |env|
|
|
92
|
+
['200', {'Content-Type' => 'text/html'}, ['A barebones rack app.']]
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
run app
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class ProfileFactorySpec < Spec
|
|
4
|
+
it 'passes auth hash to callable and stores callable#to_hash in the env' do
|
|
5
|
+
get '/'
|
|
6
|
+
assert_stores_profile env
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def assert_stores_profile(env)
|
|
12
|
+
assert_equal(
|
|
13
|
+
{
|
|
14
|
+
'internal_uid' => '1',
|
|
15
|
+
'external_uid' => 'facebook_123',
|
|
16
|
+
'name' => 'Bob'
|
|
17
|
+
},
|
|
18
|
+
env['registrar.profile'])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def env
|
|
22
|
+
last_request.env
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def response
|
|
26
|
+
last_response
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def app
|
|
30
|
+
@app ||= build_app
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def build_app
|
|
34
|
+
builder.to_app
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class RegistrarAuthStub
|
|
38
|
+
def initialize(app)
|
|
39
|
+
@app = app
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def call(env)
|
|
43
|
+
auth_hash = {
|
|
44
|
+
'provider' => {
|
|
45
|
+
'name' => 'facebook',
|
|
46
|
+
'uid' => '123'
|
|
47
|
+
},
|
|
48
|
+
'profile' => {
|
|
49
|
+
'name' => 'Bob'
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
env['registrar.auth'] = auth_hash
|
|
53
|
+
@app.call(env)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
def stubbed_auth_response
|
|
59
|
+
Marshal.load(auth_response_file)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def auth_response_file
|
|
63
|
+
File.read(auth_response_path)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def auth_response_path
|
|
67
|
+
"#{current_path}/fixtures/omniauth_1_0_auth_hash_schema"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def current_path
|
|
71
|
+
File.expand_path(File.dirname(__FILE__))
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class ProfileGatewayStub
|
|
76
|
+
def call(auth_hash)
|
|
77
|
+
Profile.new(auth_hash)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
class Profile
|
|
81
|
+
def initialize(auth_hash)
|
|
82
|
+
provider_name = auth_hash['provider']['name']
|
|
83
|
+
uid = auth_hash['provider']['uid']
|
|
84
|
+
|
|
85
|
+
@internal_uid = '1'
|
|
86
|
+
@external_uid = "#{provider_name}_#{uid}"
|
|
87
|
+
@name = auth_hash['profile']['name']
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def to_hash
|
|
91
|
+
{
|
|
92
|
+
'internal_uid' => @internal_uid,
|
|
93
|
+
'external_uid' => @external_uid,
|
|
94
|
+
'name' => @name
|
|
95
|
+
}
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def builder
|
|
101
|
+
Rack::Builder.new do
|
|
102
|
+
use RegistrarAuthStub
|
|
103
|
+
|
|
104
|
+
use Registrar::ProfileFactory, ProfileGatewayStub.new
|
|
105
|
+
|
|
106
|
+
app = Proc.new do |env|
|
|
107
|
+
['200', {'Content-Type' => 'text/html'}, ['A barebones rack app.']]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
run app
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: registrar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2.alpha
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jan Owiesniak
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-03-
|
|
11
|
+
date: 2015-03-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -38,6 +38,62 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rack
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rack-test
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: minitest
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: omniauth
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
41
97
|
description: Registrar standardizes Authentication Responses through Rack Middleware
|
|
42
98
|
and works well with common authentication mechanisms like OmniAuth.
|
|
43
99
|
email:
|
|
@@ -55,10 +111,15 @@ files:
|
|
|
55
111
|
- lib/registrar/adapter.rb
|
|
56
112
|
- lib/registrar/adapter/omni_auth.rb
|
|
57
113
|
- lib/registrar/debug.rb
|
|
58
|
-
- lib/registrar/
|
|
59
|
-
- lib/registrar/
|
|
114
|
+
- lib/registrar/gatekeeper.rb
|
|
115
|
+
- lib/registrar/profile_factory.rb
|
|
60
116
|
- lib/registrar/version.rb
|
|
61
117
|
- registrar.gemspec
|
|
118
|
+
- spec/fixtures/omniauth_1_0_auth_hash_schema
|
|
119
|
+
- spec/gatekeeper_spec.rb
|
|
120
|
+
- spec/omni_auth_adapter_spec.rb
|
|
121
|
+
- spec/profile_factory_spec.rb
|
|
122
|
+
- spec/spec_helper.rb
|
|
62
123
|
homepage: ''
|
|
63
124
|
licenses:
|
|
64
125
|
- MIT
|
|
@@ -83,4 +144,9 @@ rubygems_version: 2.2.2
|
|
|
83
144
|
signing_key:
|
|
84
145
|
specification_version: 4
|
|
85
146
|
summary: 'Registrar: Standardized Multi-Provider Registration'
|
|
86
|
-
test_files:
|
|
147
|
+
test_files:
|
|
148
|
+
- spec/fixtures/omniauth_1_0_auth_hash_schema
|
|
149
|
+
- spec/gatekeeper_spec.rb
|
|
150
|
+
- spec/omni_auth_adapter_spec.rb
|
|
151
|
+
- spec/profile_factory_spec.rb
|
|
152
|
+
- spec/spec_helper.rb
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
module Registrar
|
|
2
|
-
class ProfileGatewayStub
|
|
3
|
-
def call(auth_hash)
|
|
4
|
-
Profile.new(auth_hash)
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
class Profile
|
|
8
|
-
def initialize(auth_hash)
|
|
9
|
-
provider_name = auth_hash['provider']['name']
|
|
10
|
-
uid = auth_hash['provider']['uid']
|
|
11
|
-
|
|
12
|
-
@internal_uid = 1
|
|
13
|
-
@external_uid = "#{provider_name}_#{uid}"
|
|
14
|
-
@name = auth_hash['profile']['name']
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def to_hash
|
|
18
|
-
{
|
|
19
|
-
:internal_uid => @internal_uid,
|
|
20
|
-
:external_uid => @external_uid,
|
|
21
|
-
:access_token => 'verified',
|
|
22
|
-
:name => @name
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|