apiphobic-authorization 1.3.1 → 1.6.0
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
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.txt +1 -1
- data/lib/apiphobic/authorization/authorizer.rb +6 -6
- data/lib/apiphobic/authorization/authorizers/parameters.rb +30 -32
- data/lib/apiphobic/authorization/authorizers/scope.rb +13 -11
- data/lib/apiphobic/authorization/resource.rb +11 -11
- data/lib/apiphobic/authorization/version.rb +1 -1
- data/lib/apiphobic/errors/unpermitted_inclusions.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +45 -39
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebe1b6813491f637fc907e1d68455b3eb94550c52a77297a12ddfc26d8847975
|
4
|
+
data.tar.gz: ecc7acaaee95c033c6b5a9c22c54127abcffe03553890b48a5b89c8c07765008
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04ca46de212a7b5fb46db8a4f94b809df95ed744e0ea5e0e2a73a8a79359499ddb347d96f8466d54c770eeb67fd356545f037cc36f254dc18ffde4358a956e4c
|
7
|
+
data.tar.gz: d853205773ad8b0de8ebfb1ae2704c06ddfe99c296ea7117df5de0f9b431d3c6ed5dd770e837fcb518f55ffb7cb77d7f2b42313b32a74ae60b27c08049588a1b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/LICENSE.txt
CHANGED
@@ -7,21 +7,21 @@ class Authorizer
|
|
7
7
|
:parameters,
|
8
8
|
:resource,
|
9
9
|
:token,
|
10
|
-
:
|
10
|
+
:audience
|
11
11
|
|
12
|
-
# rubocop:disable Metrics/ParameterLists
|
13
|
-
def initialize(action:, token:, user:, issuer:, parameters:, resource:, **other)
|
12
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, resource:, **other) # rubocop:disable Metrics/ParameterLists
|
14
13
|
self.action = action
|
15
|
-
self.
|
16
|
-
self.user = user
|
14
|
+
self.audience = audience
|
17
15
|
self.parameters = parameters
|
18
16
|
self.resource = resource
|
17
|
+
self.token = token
|
19
18
|
|
20
19
|
other.each do |name, value|
|
21
20
|
public_send("#{name}=", value)
|
22
21
|
end
|
23
22
|
end
|
24
|
-
|
23
|
+
|
24
|
+
alias user audience
|
25
25
|
|
26
26
|
def able_to_index?
|
27
27
|
false
|
@@ -4,7 +4,6 @@ require 'apple_core/refinements/deep_dup'
|
|
4
4
|
require 'apiphobic/errors/unpermitted_inclusions'
|
5
5
|
require 'apiphobic/errors/unpermitted_sorts'
|
6
6
|
|
7
|
-
# rubocop:disable Metrics/ClassLength
|
8
7
|
module Apiphobic
|
9
8
|
module Authorization
|
10
9
|
module Authorizers
|
@@ -12,9 +11,9 @@ class Parameters
|
|
12
11
|
using ::AppleCore::Refinements::DeepDup
|
13
12
|
|
14
13
|
attr_accessor :action,
|
14
|
+
:audience,
|
15
15
|
:parameters,
|
16
|
-
:token
|
17
|
-
:user
|
16
|
+
:token
|
18
17
|
|
19
18
|
attr_writer :authorized_attributes,
|
20
19
|
:authorized_filters,
|
@@ -23,18 +22,18 @@ class Parameters
|
|
23
22
|
:authorized_sorts,
|
24
23
|
:ignored_attributes
|
25
24
|
|
26
|
-
# rubocop:disable Metrics/ParameterLists
|
27
|
-
def initialize(action:, token:, user:, issuer:, parameters:, **other)
|
25
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, **other) # rubocop:disable Metrics/ParameterLists
|
28
26
|
self.action = action
|
27
|
+
self.audience = audience
|
29
28
|
self.parameters = parameters.deep_dup
|
30
29
|
self.token = token
|
31
|
-
self.user = user
|
32
30
|
|
33
31
|
other.each do |name, value|
|
34
32
|
public_send("#{name}=", value)
|
35
33
|
end
|
36
34
|
end
|
37
|
-
|
35
|
+
|
36
|
+
alias user audience
|
38
37
|
|
39
38
|
def authorized_parameters
|
40
39
|
@authorized_parameters || [
|
@@ -92,8 +91,7 @@ class Parameters
|
|
92
91
|
@ignored_attributes || []
|
93
92
|
end
|
94
93
|
|
95
|
-
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
96
|
-
def call
|
94
|
+
def call # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
97
95
|
sliced_parameters = authorized_parameters.map { |v| v.is_a?(::Hash) ? v[:name] : v }
|
98
96
|
|
99
97
|
parameters.slice!(*sliced_parameters)
|
@@ -136,7 +134,6 @@ class Parameters
|
|
136
134
|
|
137
135
|
parameters.permit(*authorization)
|
138
136
|
end
|
139
|
-
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
140
137
|
|
141
138
|
private
|
142
139
|
|
@@ -195,10 +192,10 @@ class Parameters
|
|
195
192
|
def authorize_parameter(name:,
|
196
193
|
value:,
|
197
194
|
authorization_parameters:,
|
198
|
-
authorization_value: nil,
|
199
195
|
raw_parameters:,
|
200
|
-
|
201
|
-
|
196
|
+
authorization_value: nil,
|
197
|
+
allowed_values: nil,
|
198
|
+
override: {})
|
202
199
|
|
203
200
|
value = override_parameter(name: name,
|
204
201
|
value: value,
|
@@ -209,7 +206,7 @@ class Parameters
|
|
209
206
|
|
210
207
|
if authorization_value
|
211
208
|
authorization_parameters[0][name] = authorization_value
|
212
|
-
elsif value.
|
209
|
+
elsif value.instance_of?(::Array)
|
213
210
|
authorization_parameters[0][name] = []
|
214
211
|
else
|
215
212
|
authorization_parameters << name
|
@@ -246,24 +243,25 @@ class Parameters
|
|
246
243
|
end
|
247
244
|
|
248
245
|
def ignore_attribute(name:)
|
249
|
-
|
246
|
+
key_match = ->(k, _v) { k.to_s == name.to_s }
|
247
|
+
|
248
|
+
parameters[:data][:attributes] = raw_parameter_attributes.delete_if(&key_match)
|
249
|
+
parameters[:data][:relationships] = raw_parameter_relationships.delete_if(&key_match)
|
250
250
|
end
|
251
251
|
|
252
|
-
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
253
|
-
def override_parameter(name:, value:, hash:, override:)
|
252
|
+
def override_parameter(name:, value:, hash:, override:) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
254
253
|
override = { with: nil, if_admin: false, if_absent: true, if_blank: true }
|
255
254
|
.merge(override)
|
256
255
|
|
257
|
-
return value
|
258
|
-
|
259
|
-
|
260
|
-
|
256
|
+
return value if !override[:with] ||
|
257
|
+
(token.admin? && !override[:if_admin]) ||
|
258
|
+
(!hash.has_key?(name) && !override[:if_absent]) ||
|
259
|
+
(hash.has_key?(name) && value.nil? && !override[:if_blank])
|
261
260
|
|
262
261
|
hash[name] = override[:with]
|
263
262
|
|
264
263
|
override[:with]
|
265
264
|
end
|
266
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
267
265
|
|
268
266
|
def authorized_data_parameter
|
269
267
|
authorization[0][:data][2]
|
@@ -281,16 +279,14 @@ class Parameters
|
|
281
279
|
authorization[0][:filter] ||= [{}]
|
282
280
|
end
|
283
281
|
|
284
|
-
# rubocop:disable Layout/ExtraSpacing
|
285
282
|
def raw_parameter_attributes
|
286
283
|
@raw_parameter_attributes ||= begin
|
287
|
-
|
288
|
-
|
284
|
+
parameters[:data] ||= {}
|
285
|
+
parameters[:data][:attributes] ||= {}
|
289
286
|
|
290
|
-
|
291
|
-
|
287
|
+
parameters[:data][:attributes]
|
288
|
+
end
|
292
289
|
end
|
293
|
-
# rubocop:enable Layout/ExtraSpacing
|
294
290
|
|
295
291
|
def raw_parameter_filters
|
296
292
|
@raw_parameter_filters ||= parameters[:filter] ||= {}
|
@@ -301,9 +297,12 @@ class Parameters
|
|
301
297
|
end
|
302
298
|
|
303
299
|
def raw_parameter_relationships
|
304
|
-
@raw_parameter_relationships
|
305
|
-
|
306
|
-
|
300
|
+
@raw_parameter_relationships ||= begin
|
301
|
+
parameters[:data] ||= {}
|
302
|
+
parameters[:data][:relationships] ||= {}
|
303
|
+
|
304
|
+
parameters[:data][:relationships]
|
305
|
+
end
|
307
306
|
end
|
308
307
|
|
309
308
|
def raw_parameter_sorts
|
@@ -329,4 +328,3 @@ end
|
|
329
328
|
end
|
330
329
|
end
|
331
330
|
end
|
332
|
-
# rubocop:enable Metrics/ClassLength
|
@@ -9,24 +9,24 @@ class Scope
|
|
9
9
|
using ::AppleCore::Refinements::String
|
10
10
|
|
11
11
|
attr_accessor :action,
|
12
|
-
:
|
13
|
-
:user,
|
12
|
+
:audience,
|
14
13
|
:raw_parameters,
|
15
|
-
:scope_root
|
14
|
+
:scope_root,
|
15
|
+
:token
|
16
16
|
|
17
|
-
# rubocop:disable Metrics/ParameterLists
|
18
|
-
def initialize(action:, token:, user:, issuer:, parameters:, scope_root:, **other)
|
17
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, scope_root:, **other) # rubocop:disable Metrics/ParameterLists
|
19
18
|
self.action = action
|
20
|
-
self.
|
21
|
-
self.user = user
|
19
|
+
self.audience = audience
|
22
20
|
self.raw_parameters = parameters
|
23
21
|
self.scope_root = scope_root
|
22
|
+
self.token = token
|
24
23
|
|
25
24
|
other.each do |name, value|
|
26
25
|
public_send("#{name}=", value)
|
27
26
|
end
|
28
27
|
end
|
29
|
-
|
28
|
+
|
29
|
+
alias user audience
|
30
30
|
|
31
31
|
def user_scope
|
32
32
|
scope_root.public_send("for_#{user_underscored_class_name}", scope_user_id)
|
@@ -52,10 +52,12 @@ class Scope
|
|
52
52
|
|
53
53
|
def user_underscored_class_name
|
54
54
|
@user_underscored_class_name ||= begin
|
55
|
-
|
55
|
+
base_user_class_name = user
|
56
|
+
.class
|
57
|
+
.name[/([^:]+)\z/, 1]
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
+
base_user_class_name.underscore.downcase
|
60
|
+
end
|
59
61
|
end
|
60
62
|
|
61
63
|
def authorized_scope_id(name:, default:)
|
@@ -68,10 +68,10 @@ module Resource
|
|
68
68
|
.class
|
69
69
|
.authorizer_parameters_class
|
70
70
|
.new(action: action_name,
|
71
|
-
|
72
|
-
user: authorized_user,
|
71
|
+
audience: authorized_audience,
|
73
72
|
issuer: authorized_issuer,
|
74
|
-
parameters: params
|
73
|
+
parameters: params,
|
74
|
+
token: token)
|
75
75
|
.call
|
76
76
|
end
|
77
77
|
|
@@ -84,11 +84,11 @@ module Resource
|
|
84
84
|
.class
|
85
85
|
.authorizer_scope_class
|
86
86
|
.new(action: action_name,
|
87
|
-
|
88
|
-
user: authorized_user,
|
87
|
+
audience: authorized_audience,
|
89
88
|
issuer: authorized_issuer,
|
90
89
|
parameters: authorized_parameters,
|
91
|
-
scope_root: self.class.authorized_scope_root_class
|
90
|
+
scope_root: self.class.authorized_scope_root_class,
|
91
|
+
token: token)
|
92
92
|
.call
|
93
93
|
end
|
94
94
|
|
@@ -103,11 +103,11 @@ module Resource
|
|
103
103
|
.class
|
104
104
|
.authorizer_class
|
105
105
|
.new(action: action_name,
|
106
|
-
|
107
|
-
user: authorized_user,
|
106
|
+
audience: authorized_audience,
|
108
107
|
issuer: authorized_issuer,
|
109
108
|
parameters: authorized_parameters,
|
110
|
-
resource: authorized_resource&.processed
|
109
|
+
resource: authorized_resource&.processed,
|
110
|
+
token: token)
|
111
111
|
end
|
112
112
|
|
113
113
|
def authorized_resource
|
@@ -129,8 +129,8 @@ module Resource
|
|
129
129
|
parameters: authorized_parameters)
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
133
|
-
|
132
|
+
def authorized_audience
|
133
|
+
current_audience
|
134
134
|
end
|
135
135
|
|
136
136
|
def authorized_issuer
|
@@ -19,7 +19,7 @@ class UnpermittedInclusions < RuntimeError
|
|
19
19
|
|
20
20
|
def detail
|
21
21
|
'One or more of the inclusions you attempted to pass via the "include" parameter ' \
|
22
|
-
|
22
|
+
'are either not available or not authorized.'
|
23
23
|
end
|
24
24
|
|
25
25
|
def source
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apiphobic-authorization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thegranddesign
|
@@ -10,28 +10,34 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
|
14
|
+
bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
|
15
|
+
bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
|
16
|
+
NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
|
17
|
+
BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
|
18
|
+
ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
|
19
|
+
5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
|
20
|
+
Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
|
21
|
+
nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
|
22
|
+
7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
|
23
|
+
8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
|
24
|
+
c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
|
25
|
+
IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
|
26
|
+
KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
|
27
|
+
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
|
28
|
+
MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
|
29
|
+
bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
|
30
|
+
b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
|
31
|
+
rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
|
32
|
+
SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
|
33
|
+
jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
|
34
|
+
KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
|
35
|
+
/ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
|
36
|
+
rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
|
37
|
+
3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
|
38
|
+
TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
|
33
39
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
40
|
+
date: 2022-07-09 00:00:00.000000000 Z
|
35
41
|
dependencies:
|
36
42
|
- !ruby/object:Gem::Dependency
|
37
43
|
name: apiphobic-resource
|
@@ -39,14 +45,14 @@ dependencies:
|
|
39
45
|
requirements:
|
40
46
|
- - "~>"
|
41
47
|
- !ruby/object:Gem::Version
|
42
|
-
version: '1.
|
48
|
+
version: '1.2'
|
43
49
|
type: :runtime
|
44
50
|
prerelease: false
|
45
51
|
version_requirements: !ruby/object:Gem::Requirement
|
46
52
|
requirements:
|
47
53
|
- - "~>"
|
48
54
|
- !ruby/object:Gem::Version
|
49
|
-
version: '1.
|
55
|
+
version: '1.2'
|
50
56
|
- !ruby/object:Gem::Dependency
|
51
57
|
name: apple_core
|
52
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,50 +71,44 @@ dependencies:
|
|
65
71
|
name: erratum
|
66
72
|
requirement: !ruby/object:Gem::Requirement
|
67
73
|
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 3.1.1
|
71
74
|
- - "~>"
|
72
75
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
76
|
+
version: '4.0'
|
74
77
|
type: :runtime
|
75
78
|
prerelease: false
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
77
80
|
requirements:
|
78
|
-
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: 3.1.1
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '4.0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: actionpack
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
90
|
+
version: '7.0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '7.0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: rspec
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '3.
|
104
|
+
version: '3.11'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '3.
|
111
|
+
version: '3.11'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: rspeckled
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,11 +158,18 @@ files:
|
|
158
158
|
- lib/apiphobic/json_api/relationship.rb
|
159
159
|
- lib/apiphobic/rails/api_controller_compatibility.rb
|
160
160
|
- lib/apiphobic/rails/controller.rb
|
161
|
-
homepage:
|
161
|
+
homepage: https://github.com/thekompanee/apiphobic-authorization
|
162
162
|
licenses:
|
163
163
|
- MIT
|
164
164
|
metadata:
|
165
165
|
allowed_push_host: https://rubygems.org
|
166
|
+
bug_tracker_uri: https://github.com/thekompanee/apiphobic-authorization/issues
|
167
|
+
changelog_uri: https://github.com/thekompanee/apiphobic-authorization/blob/master/CHANGELOG.md
|
168
|
+
documentation_uri: https://github.com/thekompanee/apiphobic-authorization/tree/releases/v1.6.0
|
169
|
+
homepage_uri: https://github.com/thekompanee/apiphobic-authorization
|
170
|
+
source_code_uri: https://github.com/thekompanee/apiphobic-authorization
|
171
|
+
wiki_uri: https://github.com/thekompanee/apiphobic-authorization/wiki
|
172
|
+
rubygems_mfa_required: 'true'
|
166
173
|
post_install_message:
|
167
174
|
rdoc_options: []
|
168
175
|
require_paths:
|
@@ -178,8 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
185
|
- !ruby/object:Gem::Version
|
179
186
|
version: '0'
|
180
187
|
requirements: []
|
181
|
-
|
182
|
-
rubygems_version: 2.7.7
|
188
|
+
rubygems_version: 3.3.7
|
183
189
|
signing_key:
|
184
190
|
specification_version: 4
|
185
191
|
summary: Authorization for API Requests
|
metadata.gz.sig
CHANGED
Binary file
|