warden-github-rails 1.2.0 → 1.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e185d5a78a23adfb83fc779a6181e8e85875df64
4
- data.tar.gz: eb41d3f118fcacae8837752c3444ae1f6e00682d
3
+ metadata.gz: 317b12d425b52157230b92ca9d1725fde4810b52
4
+ data.tar.gz: 491cb0453238f1823d265ac03fa52c22480db28d
5
5
  SHA512:
6
- metadata.gz: 9850964cf5d91015006ceba8723fdd415c180806ac3d4239f154c0c087b454d59bff17bbc99f29765db0dbfe8db3a62c45f940178c8288f1238f2daafd761863
7
- data.tar.gz: 7d50a810e69a6ddcf086ef0093e0d4a1328814063cba4a51ec305acc5de6fe42a27b6fc8563acaff5402a7f4aee00a8e135b746e6311820bc275ac51ba7b8447
6
+ metadata.gz: eb6d79bc65a7e366a59dd6eedfe5ffdbb4cec3f19b3eb89efffcc44b28321d39b3555cae9b02ab3037255a899a78ff327fc98f0ad74ade20a23c8b8aca7af159
7
+ data.tar.gz: 222c43607372b2fb9a0eb282b1642cb33c20c7ad1237a498ef642fe3d1e515b9c88b2e51cabc310a9b4699b3780345339d4a3c1f30a5430cf0aa43e4790b9ece
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.1
4
+
5
+ - Add support for multiple teams ([@bhuga])
6
+
3
7
  ## v1.2.0
4
8
 
5
9
  - Add warden config to not intercept 401 status
@@ -33,3 +37,5 @@
33
37
  ## v0.0.1
34
38
 
35
39
  - Initial release
40
+
41
+ [@bhuga]: https://github.com/bhuga
data/README.md CHANGED
@@ -157,6 +157,11 @@ github_authenticated(team: 'markting') do
157
157
  get '/dashboard' => 'dashboard#show'
158
158
  end
159
159
 
160
+ # Matches if a member of any of the teams given. Does not initiate login if not logged in.
161
+ github_authenticated(team: ['markting', 'graphic-design']) do
162
+ get '/dashboard' => 'dashboard#show'
163
+ end
164
+
160
165
  # Using dynamic membership values:
161
166
  github_authenticate(org: lambda { |req| req.params[:id] }) do
162
167
  get '/orgs/:id' => 'orgs#show'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.1
@@ -57,8 +57,8 @@ module Warden
57
57
  end
58
58
 
59
59
  def github_enforce_options(user, options)
60
- if (team = options[:team])
61
- user.team_member?(Rails.team_id(team))
60
+ if (teams = options[:team])
61
+ Array(teams).any? { |team| user.team_member?(Rails.team_id(team)) }
62
62
  elsif (org = options[:org] || options[:organization])
63
63
  user.organization_member?(org)
64
64
  else
@@ -21,12 +21,78 @@ describe 'request to a protected resource' do
21
21
 
22
22
  context 'and not team member' do
23
23
  before { github_login }
24
- it { is_expected.to be_not_found}
24
+ it { is_expected.to be_not_found }
25
+ end
26
+ end
27
+ end
28
+
29
+ context 'which is specified by multiple numeric team ids' do
30
+ subject { get '/multi_team/protected' }
31
+
32
+ context 'when not logged in' do
33
+ it { is_expected.to be_github_oauth_redirect }
34
+ end
35
+
36
+ context 'when logged in' do
37
+ context 'and a first team member' do
38
+ before do
39
+ user = github_login
40
+ user.stub_membership(team: 123)
41
+ end
42
+
43
+ it { is_expected.to be_ok }
44
+ end
45
+
46
+ context 'and another team member' do
47
+ before do
48
+ user = github_login
49
+ user.stub_membership(team: 345)
50
+ end
51
+
52
+ it { is_expected.to be_ok }
53
+ end
54
+
55
+ context 'and not team member' do
56
+ before { github_login }
57
+ it { is_expected.to be_not_found }
25
58
  end
26
59
  end
27
60
  end
28
61
 
29
62
  context 'which is specified by a team alias' do
63
+ subject { get '/multi_team_alias/protected' }
64
+
65
+ context 'when not logged in' do
66
+ it { is_expected.to be_github_oauth_redirect }
67
+ end
68
+
69
+ context 'when logged in' do
70
+ context 'and a first team member' do
71
+ before do
72
+ user = github_login
73
+ user.stub_membership(team: 456)
74
+ end
75
+
76
+ it { is_expected.to be_ok }
77
+ end
78
+
79
+ context 'and another team member' do
80
+ before do
81
+ user = github_login
82
+ user.stub_membership(team: 789)
83
+ end
84
+
85
+ it { is_expected.to be_ok }
86
+ end
87
+
88
+ context 'and not team member' do
89
+ before { github_login }
90
+ it { is_expected.to be_not_found }
91
+ end
92
+ end
93
+ end
94
+
95
+ context 'which is specified by multiple team aliases' do
30
96
  subject { get '/team_alias/protected' }
31
97
 
32
98
  context 'when not logged in' do
@@ -45,7 +111,7 @@ describe 'request to a protected resource' do
45
111
 
46
112
  context 'and not team member' do
47
113
  before { github_login }
48
- it { is_expected.to be_not_found}
114
+ it { is_expected.to be_not_found }
49
115
  end
50
116
  end
51
117
  end
@@ -65,7 +131,7 @@ describe 'request to a protected resource' do
65
131
 
66
132
  context 'and not team member' do
67
133
  before { github_login }
68
- it { is_expected.to be_not_found}
134
+ it { is_expected.to be_not_found }
69
135
  end
70
136
  end
71
137
  end
@@ -113,7 +179,7 @@ describe 'request to a protected resource' do
113
179
 
114
180
  context 'and not organization member' do
115
181
  before { github_login }
116
- it { is_expected.to be_not_found}
182
+ it { is_expected.to be_not_found }
117
183
  end
118
184
  end
119
185
  end
@@ -136,7 +202,34 @@ describe 'request to a resource that only exists when logged in' do
136
202
 
137
203
  context 'when not team member' do
138
204
  before { github_login }
139
- it { is_expected.to be_not_found}
205
+ it { is_expected.to be_not_found }
206
+ end
207
+ end
208
+
209
+ context 'which is specified by multiple numeric team ids' do
210
+ subject { get '/multi_team/conditional' }
211
+
212
+ context 'when a first team member' do
213
+ before do
214
+ user = github_login
215
+ user.stub_membership(team: 123)
216
+ end
217
+
218
+ it { is_expected.to be_ok }
219
+ end
220
+
221
+ context 'when another team member' do
222
+ before do
223
+ user = github_login
224
+ user.stub_membership(team: 345)
225
+ end
226
+
227
+ it { is_expected.to be_ok }
228
+ end
229
+
230
+ context 'when not team member' do
231
+ before { github_login }
232
+ it { is_expected.to be_not_found }
140
233
  end
141
234
  end
142
235
 
@@ -154,7 +247,34 @@ describe 'request to a resource that only exists when logged in' do
154
247
 
155
248
  context 'when not team member' do
156
249
  before { github_login }
157
- it { is_expected.to be_not_found}
250
+ it { is_expected.to be_not_found }
251
+ end
252
+ end
253
+
254
+ context 'which is specified by multiple team aliases' do
255
+ subject { get '/multi_team_alias/conditional' }
256
+
257
+ context 'when a member of the first team' do
258
+ before do
259
+ user = github_login
260
+ user.stub_membership(team: 456)
261
+ end
262
+
263
+ it { is_expected.to be_ok }
264
+ end
265
+
266
+ context 'when a member of another team' do
267
+ before do
268
+ user = github_login
269
+ user.stub_membership(team: 789)
270
+ end
271
+
272
+ it { is_expected.to be_ok }
273
+ end
274
+
275
+ context 'when not a team member' do
276
+ before { github_login }
277
+ it { is_expected.to be_not_found }
158
278
  end
159
279
  end
160
280
  end
@@ -9,4 +9,5 @@ Warden::GitHub::Rails.setup do |config|
9
9
  scope: 'repo'
10
10
 
11
11
  config.add_team :marketing, 456
12
+ config.add_team :interns, 789
12
13
  end
@@ -17,9 +17,13 @@ RailsApp::Application.routes.draw do
17
17
 
18
18
  github_authenticate(team: 123) { get '/team/protected' => responses[200] }
19
19
  github_authenticated(team: 123) { get '/team/conditional' => responses[200] }
20
+ github_authenticate(team: [123, 345]) { get '/multi_team/protected' => responses[200] }
21
+ github_authenticated(team: [123, 345]) { get '/multi_team/conditional' => responses[200] }
20
22
 
21
23
  github_authenticate(team: :marketing) { get '/team_alias/protected' => responses[200] }
22
24
  github_authenticated(team: :marketing) { get '/team_alias/conditional' => responses[200] }
25
+ github_authenticate(team: [:marketing, :interns]) { get '/multi_team_alias/protected' => responses[200] }
26
+ github_authenticated(team: [:marketing, :interns]) { get '/multi_team_alias/conditional' => responses[200] }
23
27
 
24
28
  github_authenticate(org: :foobar_inc) { get '/org/protected' => responses[200] }
25
29
  github_authenticated(org: :foobar_inc) { get '/org/conditional' => responses[200] }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-github-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipe Fatio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-03 00:00:00.000000000 Z
11
+ date: 2015-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -187,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  version: '0'
188
188
  requirements: []
189
189
  rubyforge_project:
190
- rubygems_version: 2.4.5
190
+ rubygems_version: 2.4.5.1
191
191
  signing_key:
192
192
  specification_version: 4
193
193
  summary: An easy drop in solution for rails to use GitHub authentication.