sinatra_auth_github 0.1.3 → 0.1.4

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.
@@ -85,6 +85,18 @@ module Sinatra
85
85
  JSON.parse(github_raw_request(path))
86
86
  end
87
87
 
88
+ # See if the user is a public member of the named organization
89
+ #
90
+ # name - the organization name
91
+ #
92
+ # Returns: true if the user is public access, false otherwise
93
+ def github_public_organization_access?(name)
94
+ orgs = github_request("orgs/#{name}/public_members")
95
+ orgs.map { |org| org["login"] }.include?(github_user.login)
96
+ rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
97
+ false
98
+ end
99
+
88
100
  # See if the user is a member of the named organization
89
101
  #
90
102
  # name - the organization name
@@ -114,6 +126,16 @@ module Sinatra
114
126
  # name - the organization to test membership against
115
127
  #
116
128
  # Returns an execution halt if the user is not a member of the named org
129
+ def github_public_organization_authenticate!(name)
130
+ authenticate!
131
+ halt([401, "Unauthorized User"]) unless github_public_organization_access?(name)
132
+ end
133
+
134
+ # Enforce user membership to the named organization if membership is publicized
135
+ #
136
+ # name - the organization to test membership against
137
+ #
138
+ # Returns an execution halt if the user is not a member of the named org
117
139
  def github_organization_authenticate!(name)
118
140
  authenticate!
119
141
  halt([401, "Unauthorized User"]) unless github_organization_access?(name)
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "sinatra_auth_github"
6
- s.version = "0.1.3"
6
+ s.version = "0.1.4"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Corey Donohoe"]
9
9
  s.email = ["atmos@atmos.org"]
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency "rake"
21
21
  s.add_development_dependency "rspec", "~>1.3.0"
22
22
  s.add_development_dependency "shotgun"
23
+ s.add_development_dependency "ZenTest", "~>4.5.0"
23
24
  s.add_development_dependency "bundler", "~>1.0"
24
25
  s.add_development_dependency "randexp", "~>0.1.5"
25
26
  s.add_development_dependency "rack-test", "~>0.5.3"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra_auth_github
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Corey Donohoe
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-11 00:00:00 -07:00
18
+ date: 2011-09-20 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -110,9 +110,25 @@ dependencies:
110
110
  type: :development
111
111
  version_requirements: *id006
112
112
  - !ruby/object:Gem::Dependency
113
- name: bundler
113
+ name: ZenTest
114
114
  prerelease: false
115
115
  requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ hash: 43
121
+ segments:
122
+ - 4
123
+ - 5
124
+ - 0
125
+ version: 4.5.0
126
+ type: :development
127
+ version_requirements: *id007
128
+ - !ruby/object:Gem::Dependency
129
+ name: bundler
130
+ prerelease: false
131
+ requirement: &id008 !ruby/object:Gem::Requirement
116
132
  none: false
117
133
  requirements:
118
134
  - - ~>
@@ -123,11 +139,11 @@ dependencies:
123
139
  - 0
124
140
  version: "1.0"
125
141
  type: :development
126
- version_requirements: *id007
142
+ version_requirements: *id008
127
143
  - !ruby/object:Gem::Dependency
128
144
  name: randexp
129
145
  prerelease: false
130
- requirement: &id008 !ruby/object:Gem::Requirement
146
+ requirement: &id009 !ruby/object:Gem::Requirement
131
147
  none: false
132
148
  requirements:
133
149
  - - ~>
@@ -139,11 +155,11 @@ dependencies:
139
155
  - 5
140
156
  version: 0.1.5
141
157
  type: :development
142
- version_requirements: *id008
158
+ version_requirements: *id009
143
159
  - !ruby/object:Gem::Dependency
144
160
  name: rack-test
145
161
  prerelease: false
146
- requirement: &id009 !ruby/object:Gem::Requirement
162
+ requirement: &id010 !ruby/object:Gem::Requirement
147
163
  none: false
148
164
  requirements:
149
165
  - - ~>
@@ -155,11 +171,11 @@ dependencies:
155
171
  - 3
156
172
  version: 0.5.3
157
173
  type: :development
158
- version_requirements: *id009
174
+ version_requirements: *id010
159
175
  - !ruby/object:Gem::Dependency
160
176
  name: ruby-debug
161
177
  prerelease: false
162
- requirement: &id010 !ruby/object:Gem::Requirement
178
+ requirement: &id011 !ruby/object:Gem::Requirement
163
179
  none: false
164
180
  requirements:
165
181
  - - ">="
@@ -169,7 +185,7 @@ dependencies:
169
185
  - 0
170
186
  version: "0"
171
187
  type: :development
172
- version_requirements: *id010
188
+ version_requirements: *id011
173
189
  description: A sinatra extension for easy oauth integration with github
174
190
  email:
175
191
  - atmos@atmos.org