warden-github 1.0.3 → 1.1.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/README.md +5 -0
- data/config.ru +1 -14
- data/example/simple_app.rb +2 -0
- data/lib/warden/github.rb +2 -0
- data/lib/warden/github/verifier.rb +38 -0
- data/lib/warden/github/version.rb +1 -1
- data/spec/unit/membership_cache_spec.rb +5 -5
- data/spec/unit/user_spec.rb +2 -2
- data/warden-github.gemspec +4 -3
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19f7ba1fd04d8c9480a20834ce998b07685f7bcf
|
4
|
+
data.tar.gz: c1dc58f92e7bb9682f17e29598b879926ddccc32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a0926d904ffc5f765d138c38cb8fdf9bf95b8ef8514111683724d550184802a867906d7e2a0a20bcd9297c791d6c51f5737bc33d8817c81bffb859df83fc357
|
7
|
+
data.tar.gz: 26e92ebfaedef533d2610b2a8ba91b76d7a4265ec5b8f978a3c624bf4e6199a0f0ccb5b53e489d32d1c6e2b9668ed6fe299b1fc585b51cdb66d43a35d1cacb5b
|
data/README.md
CHANGED
@@ -53,9 +53,14 @@ use Warden::Manager do |config|
|
|
53
53
|
:client_secret => 'barfoo',
|
54
54
|
:scope => 'user,repo',
|
55
55
|
:redirect_uri => '/admin/oauth/callback' }
|
56
|
+
|
57
|
+
config.serialize_from_session { |key| Warden::GitHub::Verifier.load(key) }
|
58
|
+
config.serialize_into_session { |user| Warden::GitHub::Verifier.dump(user) }
|
56
59
|
end
|
57
60
|
```
|
58
61
|
|
62
|
+
The two serialization methods store the API token in the session securely via the `WARDEN_GITHUB_VERIFIER_SECRET` environmental variable.
|
63
|
+
|
59
64
|
### Parameters
|
60
65
|
|
61
66
|
The config parameters and their defaults are listed below.
|
data/config.ru
CHANGED
@@ -1,19 +1,6 @@
|
|
1
1
|
ENV['RACK_ENV'] ||= 'development'
|
2
2
|
|
3
|
-
|
4
|
-
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
-
rescue LoadError
|
6
|
-
require "rubygems"
|
7
|
-
require "bundler"
|
8
|
-
Bundler.setup
|
9
|
-
end
|
10
|
-
|
11
|
-
begin
|
12
|
-
require 'debugger'
|
13
|
-
rescue LoadError
|
14
|
-
require 'ruby-debug'
|
15
|
-
end
|
16
|
-
|
3
|
+
require "bundler/setup"
|
17
4
|
require 'warden/github'
|
18
5
|
|
19
6
|
if ENV['MULTI_SCOPE_APP']
|
data/example/simple_app.rb
CHANGED
@@ -14,6 +14,8 @@ module Example
|
|
14
14
|
config.failure_app = BadAuthentication
|
15
15
|
config.default_strategies :github
|
16
16
|
config.scope_defaults :default, :config => GITHUB_CONFIG
|
17
|
+
config.serialize_from_session { |key| Warden::GitHub::Verifier.load(key) }
|
18
|
+
config.serialize_into_session { |user| Warden::GitHub::Verifier.dump(user) }
|
17
19
|
end
|
18
20
|
|
19
21
|
get '/' do
|
data/lib/warden/github.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Warden
|
2
|
+
module GitHub
|
3
|
+
class Verifier
|
4
|
+
def self.dump(user)
|
5
|
+
new.serialize(user)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.load(key)
|
9
|
+
new.deserialize(key)
|
10
|
+
end
|
11
|
+
|
12
|
+
def serialize(user)
|
13
|
+
cookie_verifier.generate(user.marshal_dump)
|
14
|
+
end
|
15
|
+
|
16
|
+
def deserialize(key)
|
17
|
+
User.new.tap do |u|
|
18
|
+
u.marshal_load(cookie_verifier.verify(key))
|
19
|
+
end
|
20
|
+
rescue ::ActiveSupport::MessageVerifier::InvalidSignature
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def verifier_key
|
25
|
+
self.class.verifier_key
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def self.verifier_key
|
30
|
+
@verifier_key ||= ENV['WARDEN_GITHUB_VERIFIER_SECRET'] || SecureRandom.hex
|
31
|
+
end
|
32
|
+
|
33
|
+
def cookie_verifier
|
34
|
+
@cookie_verifier ||= ::ActiveSupport::MessageVerifier.new(verifier_key, serializer: JSON)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -7,7 +7,7 @@ describe Warden::GitHub::MembershipCache do
|
|
7
7
|
|
8
8
|
describe '#fetch_membership' do
|
9
9
|
it 'returns false by default' do
|
10
|
-
cache.fetch_membership('foo', 'bar').should
|
10
|
+
cache.fetch_membership('foo', 'bar').should be_falsey
|
11
11
|
end
|
12
12
|
|
13
13
|
context 'when cache valid' do
|
@@ -17,7 +17,7 @@ describe Warden::GitHub::MembershipCache do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'returns true' do
|
20
|
-
cache.fetch_membership('foo', 'bar').should
|
20
|
+
cache.fetch_membership('foo', 'bar').should be_truthy
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'does not invoke the block' do
|
@@ -34,7 +34,7 @@ describe Warden::GitHub::MembershipCache do
|
|
34
34
|
|
35
35
|
context 'when no block given' do
|
36
36
|
it 'returns false' do
|
37
|
-
cache.fetch_membership('foo', 'bar').should
|
37
|
+
cache.fetch_membership('foo', 'bar').should be_falsey
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -51,12 +51,12 @@ describe Warden::GitHub::MembershipCache do
|
|
51
51
|
|
52
52
|
it 'caches the value when block returns true' do
|
53
53
|
cache.fetch_membership('foo', 'bar') { true }
|
54
|
-
cache.fetch_membership('foo', 'bar').should
|
54
|
+
cache.fetch_membership('foo', 'bar').should be_truthy
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'does not cache the value when block returns false' do
|
58
58
|
cache.fetch_membership('foo', 'bar') { false }
|
59
|
-
cache.fetch_membership('foo', 'bar').should
|
59
|
+
cache.fetch_membership('foo', 'bar').should be_falsey
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
data/spec/unit/user_spec.rb
CHANGED
@@ -50,14 +50,14 @@ describe Warden::GitHub::User do
|
|
50
50
|
context 'when user is not member' do
|
51
51
|
it 'returns false' do
|
52
52
|
stub_api(user, method, ['rails', user.login], false)
|
53
|
-
user.send(method, 'rails').should
|
53
|
+
user.send(method, 'rails').should be_falsey
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
context 'when user is member' do
|
58
58
|
it 'returns true' do
|
59
59
|
stub_api(user, method, ['rails', user.login], true)
|
60
|
-
user.send(method, 'rails').should
|
60
|
+
user.send(method, 'rails').should be_truthy
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/warden-github.gemspec
CHANGED
@@ -14,8 +14,9 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.rubyforge_project = "warden-github"
|
16
16
|
|
17
|
-
s.add_dependency "warden",
|
18
|
-
s.add_dependency "octokit",
|
17
|
+
s.add_dependency "warden", ">1.0"
|
18
|
+
s.add_dependency "octokit", ">2.1.0"
|
19
|
+
s.add_dependency "activesupport", ">3.0"
|
19
20
|
|
20
21
|
s.add_development_dependency "rack", "~>1.4.1"
|
21
22
|
s.add_development_dependency "rake"
|
@@ -24,7 +25,7 @@ Gem::Specification.new do |s|
|
|
24
25
|
s.add_development_dependency "webmock", "~>1.9"
|
25
26
|
s.add_development_dependency "sinatra"
|
26
27
|
s.add_development_dependency "shotgun"
|
27
|
-
s.add_development_dependency "addressable", "
|
28
|
+
s.add_development_dependency "addressable", ">2.2.0"
|
28
29
|
s.add_development_dependency "rack-test", "~>0.5.3"
|
29
30
|
s.add_development_dependency "yajl-ruby"
|
30
31
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Donohoe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: warden
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rack
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,14 +154,14 @@ dependencies:
|
|
140
154
|
name: addressable
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
|
-
- - "
|
157
|
+
- - ">"
|
144
158
|
- !ruby/object:Gem::Version
|
145
159
|
version: 2.2.0
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
|
-
- - "
|
164
|
+
- - ">"
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: 2.2.0
|
153
167
|
- !ruby/object:Gem::Dependency
|
@@ -204,6 +218,7 @@ files:
|
|
204
218
|
- lib/warden/github/oauth.rb
|
205
219
|
- lib/warden/github/strategy.rb
|
206
220
|
- lib/warden/github/user.rb
|
221
|
+
- lib/warden/github/verifier.rb
|
207
222
|
- lib/warden/github/version.rb
|
208
223
|
- spec/fixtures/user.json
|
209
224
|
- spec/integration/oauth_spec.rb
|