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.
@@ -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
@@ -4,7 +4,4 @@ rvm:
4
4
  - 1.8.7
5
5
  - 1.9.2
6
6
  - 1.9.3
7
- - ruby-head
8
- matrix:
9
- allow_failures:
10
- - rvm: ruby-head
7
+ - 2.0.0
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
- ## Known Limitations
170
+ ## Using alongside Devise and other Warden Gems
171
171
 
172
- Currently, this gem does not play nicely with [Devise](https://github.com/plataformatec/devise). Devise is built on top of warden and performs some monkeypatching of warden which breaks this gem. Support will be added as soon as possible.
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
+ 1.0.0
@@ -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
 
@@ -4,9 +4,6 @@ module Warden
4
4
  class Config
5
5
  BadConfig = Class.new(StandardError)
6
6
 
7
- # A cache of the warden config for the active manager.
8
- attr_accessor :warden_config
9
-
10
7
  # Default scope to use when not explicitly specified.
11
8
  attr_accessor :default_scope
12
9
 
@@ -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
- config.app_middleware.use Warden::Manager do |config|
6
- config.failure_app = lambda { |env| [403, {}, [env['warden'].message]] }
7
- Rails.warden_config = config
8
- Rails.scopes.each do |scope, scope_config|
9
- config.scope_defaults scope, :strategies => [:github],
10
- :config => scope_config
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.controller_helpers' do
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
- ActiveSupport.on_load(:action_view) do
20
- include ViewHelpers
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,2 @@
1
+ class ViewTestsController < ActionController::Base
2
+ end
@@ -0,0 +1 @@
1
+ <%= !!defined?(github_authenticated?) %>
@@ -0,0 +1 @@
1
+ <%= !!defined?(github_user) %>
@@ -43,6 +43,10 @@ RailsApp::Application.routes.draw do
43
43
  end
44
44
  end
45
45
 
46
+ %w[ user authenticated ].each do |method|
47
+ get "/view_tests/#{method}" => "view_tests##{method}"
48
+ end
49
+
46
50
  # Everything else should be a 404:
47
51
 
48
52
  match '*all' => responses[404]
@@ -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', '~> 3.2'
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.13.2'
24
- gem.add_dependency 'railties', '~> 3.2'
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.1
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-02-20 00:00:00.000000000 Z
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.13.2
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.13.2
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: 1.8.23
182
+ rubygems_version: 2.0.3
202
183
  signing_key:
203
- specification_version: 3
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