warden-github-rails 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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