sinatra_auth_github 0.5.3 → 0.5.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.
@@ -58,15 +58,6 @@ module Sinatra
58
58
  warden.user
59
59
  end
60
60
 
61
- def github_api_uri
62
- if ENV['GITHUB_OAUTH_API_DOMAIN']
63
- ENV['GITHUB_OAUTH_API_DOMAIN']
64
- else
65
- uri = URI.parse(env['warden'].config[:github_oauth_domain])
66
- "#{uri.scheme}://api.#{uri.host}"
67
- end
68
- end
69
-
70
61
  # Send a V3 API GET request to path
71
62
  #
72
63
  # path - the path on api.github.com to hit
@@ -77,7 +68,7 @@ module Sinatra
77
68
  # github_raw_request("/user")
78
69
  # # => RestClient::Response
79
70
  def github_raw_request(path)
80
- RestClient.get("#{github_api_uri}/#{path}", :params => { :access_token => github_user.token }, :accept => :json)
71
+ github_user.github_raw_request(path)
81
72
  end
82
73
 
83
74
  # Send a V3 API GET request to path and parse the response body
@@ -90,7 +81,7 @@ module Sinatra
90
81
  # github_request("/user")
91
82
  # # => { 'login' => 'atmos', ... }
92
83
  def github_request(path)
93
- Yajl.load(github_raw_request(path))
84
+ github_user.github_request(path)
94
85
  end
95
86
 
96
87
  # See if the user is a public member of the named organization
@@ -99,10 +90,7 @@ module Sinatra
99
90
  #
100
91
  # Returns: true if the user is public access, false otherwise
101
92
  def github_public_organization_access?(name)
102
- orgs = github_request("orgs/#{name}/public_members")
103
- orgs.map { |org| org["login"] }.include?(github_user.login)
104
- rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
105
- false
93
+ github_user.publicized_organization_member?(name)
106
94
  end
107
95
 
108
96
  # See if the user is a member of the named organization
@@ -111,10 +99,7 @@ module Sinatra
111
99
  #
112
100
  # Returns: true if the user has access, false otherwise
113
101
  def github_organization_access?(name)
114
- orgs = github_request("orgs/#{name}/members")
115
- orgs.map { |org| org["login"] }.include?(github_user.login)
116
- rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
117
- false
102
+ github_user.organization_member?(name)
118
103
  end
119
104
 
120
105
  # See if the user is a member of the team id
@@ -123,10 +108,7 @@ module Sinatra
123
108
  #
124
109
  # Returns: true if the user has access, false otherwise
125
110
  def github_team_access?(team_id)
126
- members = github_request("teams/#{team_id}/members")
127
- members.map { |user| user["login"] }.include?(github_user.login)
128
- rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
129
- false
111
+ github_user.team_member?(team_id)
130
112
  end
131
113
 
132
114
  # Enforce user membership to the named organization
@@ -1,7 +1,7 @@
1
1
  module Sinatra
2
2
  module Auth
3
3
  module Github
4
- VERSION = "0.5.3"
4
+ VERSION = "0.5.4"
5
5
  end
6
6
  end
7
7
  end
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency "sinatra", "~>1.0"
18
18
  s.add_dependency "yajl-ruby", "~>1.1"
19
19
  s.add_dependency "rest-client", "~>1.6.1"
20
- s.add_dependency "warden-github", "~>0.4.4"
20
+ s.add_dependency "warden-github", "~>0.5.0"
21
21
 
22
22
  s.add_development_dependency "rake"
23
23
  s.add_development_dependency "rspec", "~>2.0.0"
data/spec/app.rb CHANGED
@@ -6,6 +6,7 @@ module Example
6
6
  enable :sessions
7
7
 
8
8
  set :github_options, {
9
+ :scopes => "user",
9
10
  :secret => ENV['GITHUB_CLIENT_SECRET'],
10
11
  :client_id => ENV['GITHUB_CLIENT_ID'],
11
12
  }
@@ -24,15 +25,19 @@ module Example
24
25
  end
25
26
 
26
27
  get '/orgs/:id' do
27
- github_public_organization_authenticate!(params['id'])
28
+ github_organization_authenticate!(params['id'])
28
29
  "Hello There, #{github_user.name}! You have access to the #{params['id']} organization."
29
30
  end
30
31
 
31
- # the scopes above need to include repo for team access :(
32
- # get '/teams/:id' do
33
- # github_team_authenticate!(params['id'])
34
- # "Hello There, #{github_user.name}! You have access to the #{params['id']} team."
35
- # end
32
+ get '/publicized_orgs/:id' do
33
+ github_publicized_organization_authenticate!(params['id'])
34
+ "Hello There, #{github_user.name}! You are publicly a member of the #{params['id']} organization."
35
+ end
36
+
37
+ get '/teams/:id' do
38
+ github_team_authenticate!(params['id'])
39
+ "Hello There, #{github_user.name}! You have access to the #{params['id']} team."
40
+ end
36
41
 
37
42
  get '/logout' do
38
43
  logout!
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: 13
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 3
10
- version: 0.5.3
9
+ - 4
10
+ version: 0.5.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Corey Donohoe
@@ -72,12 +72,12 @@ dependencies:
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- hash: 7
75
+ hash: 11
76
76
  segments:
77
77
  - 0
78
- - 4
79
- - 4
80
- version: 0.4.4
78
+ - 5
79
+ - 0
80
+ version: 0.5.0
81
81
  type: :runtime
82
82
  version_requirements: *id004
83
83
  - !ruby/object:Gem::Dependency