sinatra_auth_github 0.0.15 → 0.0.16
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sinatra/auth/github.rb +17 -6
- data/sinatra_auth_github.gemspec +1 -1
- metadata +3 -3
data/lib/sinatra/auth/github.rb
CHANGED
@@ -35,23 +35,34 @@ module Sinatra
|
|
35
35
|
warden.user
|
36
36
|
end
|
37
37
|
|
38
|
+
# API Requests
|
38
39
|
def github_request(path)
|
39
40
|
response = RestClient.get "https://github.com/api/v2/json/#{path}", :params => { :access_token => github_user.token }, :accept => :json
|
40
41
|
JSON.parse(response.body)
|
41
42
|
end
|
42
43
|
|
44
|
+
# Access Inquiries
|
45
|
+
def github_organization_access?(name)
|
46
|
+
orgs = github_request("user/show/#{github_user.login}/organizations")["organizations"]
|
47
|
+
orgs.map { |org| org["login"] }.include?(name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def github_organization_team_access?(name, team)
|
51
|
+
members = github_request("teams/#{team}/members")["users"]
|
52
|
+
members.map { |user| user["login"] }.include?(github_user.login)
|
53
|
+
rescue RestClient::Unauthorized => e
|
54
|
+
false
|
55
|
+
end
|
56
|
+
|
57
|
+
# Auth only certain individuals
|
43
58
|
def github_organization_authenticate!(name)
|
44
59
|
authenticate!
|
45
|
-
|
46
|
-
halt([401, "Unauthorized User"]) unless orgs.map { |org| org["login"] }.include?(name)
|
60
|
+
halt([401, "Unauthorized User"]) unless github_organization_access?(name)
|
47
61
|
end
|
48
62
|
|
49
63
|
def github_organization_team_authenticate!(name, team)
|
50
64
|
authenticate!
|
51
|
-
|
52
|
-
halt([401, "Unauthorized User"]) unless members.map { |user| user["login"] }.include?(github_user.login)
|
53
|
-
rescue RestClient::Unauthorized => e
|
54
|
-
halt([401, "Unauthorized User"])
|
65
|
+
halt([401, "Unauthorized User"]) unless github_organization_team_access?(name, team)
|
55
66
|
end
|
56
67
|
|
57
68
|
def _relative_url_for(path)
|
data/sinatra_auth_github.gemspec
CHANGED
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:
|
4
|
+
hash: 63
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 16
|
10
|
+
version: 0.0.16
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Corey Donohoe
|