prx_auth 1.7.2 → 1.8.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 +4 -4
- data/lib/prx_auth/resource_map.rb +16 -3
- data/lib/prx_auth/scope_list.rb +1 -1
- data/lib/prx_auth/version.rb +1 -1
- data/lib/rack/prx_auth/token_data.rb +13 -0
- data/prx_auth.gemspec +2 -0
- data/test/prx_auth/resource_map_test.rb +18 -0
- data/test/rack/prx_auth/token_data_test.rb +37 -0
- data/test/test_helper.rb +1 -0
- metadata +31 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 076bc119886d252cc587e1e391ba10eaa3b1d24151ba559135c3e40d78565201
|
4
|
+
data.tar.gz: 40f6695953ad60bb9dcd8aef4e3483434c8274266c83632e4ce3f628e9022c5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 169c89b6926a03cd9e1599298858e1d22fb5c468d9c3c56ade1b616c4893d87d707092f2704996edb9c18291e8ecf443a92559cb0ed2f30b5152d0abaa3be22a
|
7
|
+
data.tar.gz: edfb7b2f60fdf23e6d950d4c7ad2cd5efe3be300856ad829ee2724a3a8edf16c2702540185aba0813d151892b941eca9db9d8255eba25cf1b2c790af04c108c6
|
@@ -43,6 +43,19 @@ module PrxAuth
|
|
43
43
|
super(key.to_s, value)
|
44
44
|
end
|
45
45
|
|
46
|
+
def except!(*keys)
|
47
|
+
keys.each { |key| delete(key.to_s) }
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
def except(*keys)
|
52
|
+
dup.except!(*keys)
|
53
|
+
end
|
54
|
+
|
55
|
+
def empty?
|
56
|
+
@wildcard.empty? && (super || values.all?(&:empty?))
|
57
|
+
end
|
58
|
+
|
46
59
|
def condense
|
47
60
|
condensed_wildcard = @wildcard.condense
|
48
61
|
condensed_map = map do |resource, list|
|
@@ -100,15 +113,15 @@ module PrxAuth
|
|
100
113
|
end
|
101
114
|
end
|
102
115
|
|
103
|
-
if @wildcard.length > 0
|
104
|
-
result[WILDCARD_KEY] = @wildcard
|
116
|
+
if @wildcard.length > 0 || other_wildcard.length > 0
|
117
|
+
result[WILDCARD_KEY] = @wildcard & other_wildcard
|
105
118
|
end
|
106
119
|
|
107
120
|
ResourceMap.new(result).condense
|
108
121
|
end
|
109
122
|
|
110
123
|
def as_json(opts = {})
|
111
|
-
super
|
124
|
+
super.merge((@wildcard.length > 0) ? {WILDCARD_KEY => @wildcard}.as_json(opts) : {})
|
112
125
|
end
|
113
126
|
|
114
127
|
def resources(namespace = nil, scope = nil)
|
data/lib/prx_auth/scope_list.rb
CHANGED
data/lib/prx_auth/version.rb
CHANGED
@@ -37,6 +37,19 @@ module Rack
|
|
37
37
|
resources(::PrxAuth::Rails.configuration.namespace, scope).map(&:to_i)
|
38
38
|
end
|
39
39
|
|
40
|
+
def except!(*resources)
|
41
|
+
@authorized_resources = @authorized_resources.except(*resources)
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def except(*resources)
|
46
|
+
dup.except!(*resources)
|
47
|
+
end
|
48
|
+
|
49
|
+
def empty_resources?
|
50
|
+
@authorized_resources.empty?
|
51
|
+
end
|
52
|
+
|
40
53
|
private
|
41
54
|
|
42
55
|
def unpack_aur(aur)
|
data/prx_auth.gemspec
CHANGED
@@ -23,7 +23,9 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "coveralls", "~> 0"
|
24
24
|
spec.add_development_dependency "guard"
|
25
25
|
spec.add_development_dependency "guard-minitest"
|
26
|
+
spec.add_development_dependency "pry"
|
26
27
|
spec.add_development_dependency "standard"
|
28
|
+
spec.add_development_dependency "m"
|
27
29
|
|
28
30
|
spec.add_dependency "rack", ">= 1.5.2"
|
29
31
|
spec.add_dependency "json", ">= 1.8.1"
|
@@ -153,6 +153,11 @@ describe PrxAuth::ResourceMap do
|
|
153
153
|
assert !map.contains?("one", :four) && !map.contains?("two", :four)
|
154
154
|
assert map.contains?("*", :wild)
|
155
155
|
end
|
156
|
+
|
157
|
+
it "works with global scoped wildcards" do
|
158
|
+
map = new_map("*" => "something") & new_map("*" => "ns1:something")
|
159
|
+
assert map.contains?("*", "ns1", :something)
|
160
|
+
end
|
156
161
|
end
|
157
162
|
|
158
163
|
describe "#as_json" do
|
@@ -181,4 +186,17 @@ describe PrxAuth::ResourceMap do
|
|
181
186
|
refute_nil map["789"]
|
182
187
|
end
|
183
188
|
end
|
189
|
+
|
190
|
+
describe "#except" do
|
191
|
+
it "removes keys" do
|
192
|
+
map2 = map.except(123)
|
193
|
+
|
194
|
+
assert_equal ["123", "456"], map.keys
|
195
|
+
assert_equal ["456"], map2.keys
|
196
|
+
|
197
|
+
# the ! version modifies the map
|
198
|
+
map2.except!("456")
|
199
|
+
assert_equal [], map2.keys
|
200
|
+
end
|
201
|
+
end
|
184
202
|
end
|
@@ -97,5 +97,42 @@ describe Rack::PrxAuth::TokenData do
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
|
+
|
101
|
+
describe "#except" do
|
102
|
+
let(:token) { Rack::PrxAuth::TokenData.new("aur" => aur) }
|
103
|
+
let(:aur) { {"123" => "admin ns1:namespaced", "456" => "member"} }
|
104
|
+
|
105
|
+
it "removes resources from the aur" do
|
106
|
+
token2 = token.except(123)
|
107
|
+
|
108
|
+
assert token.authorized?(123, "admin")
|
109
|
+
assert token.authorized?(456, "member")
|
110
|
+
|
111
|
+
refute token2.authorized?(123, "admin")
|
112
|
+
assert token2.authorized?(456, "member")
|
113
|
+
|
114
|
+
# the ! version modifies the token
|
115
|
+
token2.except!(456)
|
116
|
+
refute token2.authorized?(456, "member")
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "#empty_resources?" do
|
121
|
+
it "checks if the user has access to any resources" do
|
122
|
+
token = Rack::PrxAuth::TokenData.new("aur" => {"123" => "anything"})
|
123
|
+
refute token.empty_resources?
|
124
|
+
assert token.except("123").empty_resources?
|
125
|
+
end
|
126
|
+
|
127
|
+
it "checks for empty scopes" do
|
128
|
+
token = Rack::PrxAuth::TokenData.new("aur" => {"123" => ""})
|
129
|
+
assert token.empty_resources?
|
130
|
+
end
|
131
|
+
|
132
|
+
it "is not empty with wildcard auth" do
|
133
|
+
token = Rack::PrxAuth::TokenData.new("aur" => {"*" => "anything"})
|
134
|
+
refute token.empty_resources?
|
135
|
+
end
|
136
|
+
end
|
100
137
|
end
|
101
138
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prx_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eve Asher
|
8
8
|
- Chris Rhoden
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2025-03-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
@@ -81,6 +80,20 @@ dependencies:
|
|
81
80
|
- - ">="
|
82
81
|
- !ruby/object:Gem::Version
|
83
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
84
97
|
- !ruby/object:Gem::Dependency
|
85
98
|
name: standard
|
86
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +108,20 @@ dependencies:
|
|
95
108
|
- - ">="
|
96
109
|
- !ruby/object:Gem::Version
|
97
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: m
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
98
125
|
- !ruby/object:Gem::Dependency
|
99
126
|
name: rack
|
100
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,7 +202,6 @@ homepage: https://github.com/PRX/prx_auth
|
|
175
202
|
licenses:
|
176
203
|
- MIT
|
177
204
|
metadata: {}
|
178
|
-
post_install_message:
|
179
205
|
rdoc_options: []
|
180
206
|
require_paths:
|
181
207
|
- lib
|
@@ -190,8 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
216
|
- !ruby/object:Gem::Version
|
191
217
|
version: '0'
|
192
218
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
194
|
-
signing_key:
|
219
|
+
rubygems_version: 3.6.2
|
195
220
|
specification_version: 4
|
196
221
|
summary: Utilites for parsing PRX JWTs and Rack middleware that verifies and attaches
|
197
222
|
the token's claims to env.
|