warden-github-rails 0.0.1 → 1.0.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 +7 -0
- data/.travis.yml +1 -4
- data/README.md +10 -2
- data/VERSION +1 -1
- data/lib/warden/github/rails.rb +0 -3
- data/lib/warden/github/rails/config.rb +0 -3
- data/lib/warden/github/rails/controller_helpers.rb +4 -0
- data/lib/warden/github/rails/railtie.rb +24 -9
- data/spec/integration/view_helpers_spec.rb +19 -0
- data/spec/rails_app/app/controllers/view_tests_controller.rb +2 -0
- data/spec/rails_app/app/views/view_tests/authenticated.html.erb +1 -0
- data/spec/rails_app/app/views/view_tests/user.html.erb +1 -0
- data/spec/rails_app/config/routes.rb +4 -0
- data/warden-github-rails.gemspec +3 -3
- metadata +23 -38
- data/lib/warden/github/rails/view_helpers.rb +0 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f0d71776d5d7ebaad54e82b9acc5483d13bc1690
|
4
|
+
data.tar.gz: 0955b110b3602bf13205c7c401d7194e59f27d17
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2772ed766c5f10da6b5799f981041584fcd0c31acfdb22be76c545983b8693df167f884c26890dc4f36231e4ec05c031278ee1d3d8a1a122b9fb6a97409008c7
|
7
|
+
data.tar.gz: 181144304f3d540561f809068df3fb93321f9a8625a5993df865de8e300cd970afb63aaeba6afab1e3b82134701e070500b71fb604ac2ee5bd44c7b25196b2d0
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -167,9 +167,17 @@ end
|
|
167
167
|
|
168
168
|
Once a user is logged in, you'll have access to it in the controller using `github_user`. It is an instance of `Warden::GitHub::User` which is defined in the [warden-github](https://github.com/atmos/warden-github/blob/master/lib/warden/github/user.rb) gem. The instance has several methods to access user information such as `#name`, `#id`, `#email`, etc. It also features a method `#api` which returns a preconfigured [Octokit](https://github.com/pengwynn/octokit) client for that user.
|
169
169
|
|
170
|
-
##
|
170
|
+
## Using alongside Devise and other Warden Gems
|
171
171
|
|
172
|
-
Currently
|
172
|
+
Currently this gem does not play nicely with other gems that setup a warden middleware.
|
173
|
+
The reason is that warden simply does not have support for multiple middlewares.
|
174
|
+
The warden middleware configures a warden instance and adds it to the rack environment.
|
175
|
+
Any other warden middleware downstream checks for any existing warden instance in the environment and, if present, skips itself.
|
176
|
+
I've opened an [issue](https://github.com/hassox/warden/issues/67) on the warden repository to discuss possible workarounds.
|
177
|
+
|
178
|
+
Nevertheless, this gem is compatible with devise.
|
179
|
+
devise allows you to specify a block that will be invoked when the warden middleware is configured.
|
180
|
+
This functionality is used in this gem in order to setup the github strategy for warden instead of inserting our own middleware.
|
173
181
|
|
174
182
|
## Additional Information
|
175
183
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
1.0.0
|
data/lib/warden/github/rails.rb
CHANGED
@@ -5,7 +5,6 @@ require 'warden/github/rails/routes'
|
|
5
5
|
require 'warden/github/rails/railtie'
|
6
6
|
require 'warden/github/rails/config'
|
7
7
|
require 'warden/github/rails/controller_helpers'
|
8
|
-
require 'warden/github/rails/view_helpers'
|
9
8
|
|
10
9
|
require 'forwardable'
|
11
10
|
|
@@ -16,8 +15,6 @@ module Warden
|
|
16
15
|
|
17
16
|
def_delegators :config,
|
18
17
|
:default_scope,
|
19
|
-
:warden_config,
|
20
|
-
:warden_config=,
|
21
18
|
:scopes,
|
22
19
|
:team_id
|
23
20
|
|
@@ -2,6 +2,10 @@ module Warden
|
|
2
2
|
module GitHub
|
3
3
|
module Rails
|
4
4
|
module ControllerHelpers
|
5
|
+
def self.included(klass)
|
6
|
+
klass.helper_method(:github_authenticated?, :github_user)
|
7
|
+
end
|
8
|
+
|
5
9
|
# Initiates the OAuth flow if not already authenticated for the
|
6
10
|
# specified scope.
|
7
11
|
def github_authenticate!(scope=Rails.default_scope)
|
@@ -2,22 +2,37 @@ module Warden
|
|
2
2
|
module GitHub
|
3
3
|
module Rails
|
4
4
|
class Railtie < ::Rails::Railtie
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
initializer 'warden-github-rails.warden' do |app|
|
6
|
+
# When devise is used, it inserts a warden middlware. Multiple warden
|
7
|
+
# middlewares do not work properly. Devise allows for a block to be
|
8
|
+
# specified that is invoked when its warden middleware is configured.
|
9
|
+
# This makes it possible to setup warden-github-rails through devise.
|
10
|
+
if defined?(::Devise)
|
11
|
+
::Devise.warden { |config| setup_scopes(config) }
|
12
|
+
else
|
13
|
+
app.config.middleware.use Warden::Manager do |config|
|
14
|
+
setup_failure_app(config)
|
15
|
+
setup_scopes(config)
|
16
|
+
end
|
11
17
|
end
|
12
18
|
end
|
13
19
|
|
14
|
-
initializer 'warden-github-rails.
|
20
|
+
initializer 'warden-github-rails.helpers' do
|
15
21
|
ActiveSupport.on_load(:action_controller) do
|
16
22
|
include ControllerHelpers
|
17
23
|
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def setup_scopes(config)
|
27
|
+
Rails.scopes.each do |scope, scope_config|
|
28
|
+
config.scope_defaults scope, :strategies => [:github],
|
29
|
+
:config => scope_config
|
30
|
+
end
|
31
|
+
end
|
18
32
|
|
19
|
-
|
20
|
-
|
33
|
+
def setup_failure_app(config)
|
34
|
+
config.failure_app = lambda do |env|
|
35
|
+
[403, {}, [env['warden'].message]]
|
21
36
|
end
|
22
37
|
end
|
23
38
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'view helpers' do
|
4
|
+
describe '#github_user' do
|
5
|
+
subject(:request) { get "/view_tests/user" }
|
6
|
+
|
7
|
+
it 'is defined' do
|
8
|
+
request.body.should include 'true'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#github_authenticated?' do
|
13
|
+
subject(:request) { get "/view_tests/authenticated" }
|
14
|
+
|
15
|
+
it 'is defined' do
|
16
|
+
request.body.should include 'true'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= !!defined?(github_authenticated?) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= !!defined?(github_user) %>
|
data/warden-github-rails.gemspec
CHANGED
@@ -16,10 +16,10 @@ Gem::Specification.new do |gem|
|
|
16
16
|
|
17
17
|
gem.add_development_dependency 'rspec', '~> 2.12'
|
18
18
|
gem.add_development_dependency 'simplecov'
|
19
|
-
gem.add_development_dependency 'rails', '
|
19
|
+
gem.add_development_dependency 'rails', '>= 3.2'
|
20
20
|
gem.add_development_dependency 'rack-test', '~> 0.6'
|
21
21
|
gem.add_development_dependency 'addressable', '~> 2.3'
|
22
22
|
|
23
|
-
gem.add_dependency 'warden-github', '~> 0.
|
24
|
-
gem.add_dependency 'railties', '
|
23
|
+
gem.add_dependency 'warden-github', '~> 0.14.0'
|
24
|
+
gem.add_dependency 'railties', '>= 3.2'
|
25
25
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden-github-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Philipe Fatio
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-05-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,39 +27,34 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: simplecov
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rails
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '3.2'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '3.2'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rack-test
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: addressable
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,33 +83,29 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: warden-github
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0.
|
89
|
+
version: 0.14.0
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.
|
96
|
+
version: 0.14.0
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: railties
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '3.2'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '3.2'
|
126
111
|
description: An easy drop in solution for rails to use GitHub authentication.
|
@@ -146,13 +131,16 @@ files:
|
|
146
131
|
- lib/warden/github/rails/test_helpers.rb
|
147
132
|
- lib/warden/github/rails/test_helpers/mock_user.rb
|
148
133
|
- lib/warden/github/rails/version.rb
|
149
|
-
- lib/warden/github/rails/view_helpers.rb
|
150
134
|
- spec/integration/controller_helpers_spec.rb
|
151
135
|
- spec/integration/membership_spec.rb
|
152
136
|
- spec/integration/route_spec.rb
|
153
137
|
- spec/integration/scope_spec.rb
|
138
|
+
- spec/integration/view_helpers_spec.rb
|
154
139
|
- spec/rails_app/app/controllers/scoped_controller.rb
|
155
140
|
- spec/rails_app/app/controllers/unscoped_controller.rb
|
141
|
+
- spec/rails_app/app/controllers/view_tests_controller.rb
|
142
|
+
- spec/rails_app/app/views/view_tests/authenticated.html.erb
|
143
|
+
- spec/rails_app/app/views/view_tests/user.html.erb
|
156
144
|
- spec/rails_app/config.ru
|
157
145
|
- spec/rails_app/config/application.rb
|
158
146
|
- spec/rails_app/config/boot.rb
|
@@ -174,41 +162,38 @@ files:
|
|
174
162
|
- warden-github-rails.gemspec
|
175
163
|
homepage: https://github.com/fphilipe/warden-github-rails
|
176
164
|
licenses: []
|
165
|
+
metadata: {}
|
177
166
|
post_install_message:
|
178
167
|
rdoc_options: []
|
179
168
|
require_paths:
|
180
169
|
- lib
|
181
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
-
none: false
|
183
171
|
requirements:
|
184
|
-
- -
|
172
|
+
- - '>='
|
185
173
|
- !ruby/object:Gem::Version
|
186
174
|
version: '0'
|
187
|
-
segments:
|
188
|
-
- 0
|
189
|
-
hash: 2808666797376643453
|
190
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
|
-
none: false
|
192
176
|
requirements:
|
193
|
-
- -
|
177
|
+
- - '>='
|
194
178
|
- !ruby/object:Gem::Version
|
195
179
|
version: '0'
|
196
|
-
segments:
|
197
|
-
- 0
|
198
|
-
hash: 2808666797376643453
|
199
180
|
requirements: []
|
200
181
|
rubyforge_project:
|
201
|
-
rubygems_version:
|
182
|
+
rubygems_version: 2.0.3
|
202
183
|
signing_key:
|
203
|
-
specification_version:
|
184
|
+
specification_version: 4
|
204
185
|
summary: An easy drop in solution for rails to use GitHub authentication.
|
205
186
|
test_files:
|
206
187
|
- spec/integration/controller_helpers_spec.rb
|
207
188
|
- spec/integration/membership_spec.rb
|
208
189
|
- spec/integration/route_spec.rb
|
209
190
|
- spec/integration/scope_spec.rb
|
191
|
+
- spec/integration/view_helpers_spec.rb
|
210
192
|
- spec/rails_app/app/controllers/scoped_controller.rb
|
211
193
|
- spec/rails_app/app/controllers/unscoped_controller.rb
|
194
|
+
- spec/rails_app/app/controllers/view_tests_controller.rb
|
195
|
+
- spec/rails_app/app/views/view_tests/authenticated.html.erb
|
196
|
+
- spec/rails_app/app/views/view_tests/user.html.erb
|
212
197
|
- spec/rails_app/config.ru
|
213
198
|
- spec/rails_app/config/application.rb
|
214
199
|
- spec/rails_app/config/boot.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Warden
|
2
|
-
module GitHub
|
3
|
-
module Rails
|
4
|
-
module ViewHelpers
|
5
|
-
# Checks whether a user is logged in for the specified scope.
|
6
|
-
def github_authenticated?(scope=Rails.default_scope)
|
7
|
-
request.env['warden'].authenticated?(scope)
|
8
|
-
end
|
9
|
-
|
10
|
-
# Returns the currently signed in user for the specified scope. See the
|
11
|
-
# documentation for Warden::GitHub::User for available methods.
|
12
|
-
def github_user(scope=Rails.default_scope)
|
13
|
-
request.env['warden'].user(scope)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|