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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8db9794b5957f93a863dd566c371420ee1d02002c7ab8a681fdc3a518cbe4f1c
4
- data.tar.gz: 9938ebf515cc8c9918f8ae3e597600245a76ae48b62fecb3f102ddfbb4e2fe8c
3
+ metadata.gz: 076bc119886d252cc587e1e391ba10eaa3b1d24151ba559135c3e40d78565201
4
+ data.tar.gz: 40f6695953ad60bb9dcd8aef4e3483434c8274266c83632e4ce3f628e9022c5e
5
5
  SHA512:
6
- metadata.gz: 4dd977316195060b437eca1ce1c2fb8f4fa033ee8262ca406d769200e0360d1b69a95cdc72ebb5c85b9d54d149a52faf531b453f82a3612dc423abed9a3fe590
7
- data.tar.gz: 29057475f034443ef955eaf69773526044bfdd85de2e753676fcaaaa57ae275b74a64158043d0afa363961c98876c4aea169ba54887173330d1ac49c4ee57ace
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 - (@wildcard - other_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(opts).merge((@wildcard.length > 0) ? {WILDCARD_KEY => @wildcard}.as_json(opts) : {})
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)
@@ -36,7 +36,7 @@ module PrxAuth
36
36
  case list
37
37
  when PrxAuth::ScopeList then list
38
38
  when Array then super(list.join(" "))
39
- else super(list)
39
+ else super
40
40
  end
41
41
  end
42
42
 
@@ -1,3 +1,3 @@
1
1
  module PrxAuth
2
- VERSION = "1.7.2"
2
+ VERSION = "1.8.1"
3
3
  end
@@ -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
@@ -4,6 +4,7 @@ Coveralls.wear!
4
4
  $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
5
5
  require "prx_auth"
6
6
  require "rack/prx_auth"
7
+ require "pry"
7
8
 
8
9
  require "minitest/autorun"
9
10
  require "minitest/spec"
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.7.2
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: 2023-05-26 00:00:00.000000000 Z
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.3.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.