auth0 5.14.2 → 5.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/snyk.yml +4 -2
- data/.github/workflows/test.yml +1 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +62 -42
- data/lib/auth0/api/authentication_endpoints.rb +2 -1
- data/lib/auth0/api/v2/client_grants.rb +27 -2
- data/lib/auth0/api/v2/organizations.rb +57 -1
- data/lib/auth0/version.rb +1 -1
- data/spec/lib/auth0/api/authentication_endpoints_spec.rb +28 -0
- data/spec/lib/auth0/api/v2/client_grants_spec.rb +30 -0
- data/spec/lib/auth0/api/v2/organizations_spec.rb +92 -2
- data/spec/lib/auth0/mixins/initializer_spec.rb +2 -1
- data/spec/lib/auth0/mixins/token_management_spec.rb +2 -1
- metadata +2 -3
- data/.circleci/config.yml +0 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0978f1fb53fb4cf3047f12b60ae15d131a47e225f124bb74b26a508ba51c1548'
|
4
|
+
data.tar.gz: 37dedc6fe3b8c9cf4a8fe795d0011a73c66a7c79f4485bb72c4f722772bf2644
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f5c2df075fd3dea61c55467c3818561f763d459aaeb66c9147849f46c0ed366777e59982438d9479f197f16770e4615bedb3872326775f0ba3782d312a5ad84
|
7
|
+
data.tar.gz: d65412c6bc0a4a1806eb1ff08b92503ea3c60c3e44e359b4c45cde37c715109ced81bd2aa78f726784fc1c82c45a3482aacaacbdcdf3abf58ecf070b505d3de4
|
data/.github/workflows/snyk.yml
CHANGED
@@ -11,7 +11,7 @@ on:
|
|
11
11
|
branches:
|
12
12
|
- master
|
13
13
|
schedule:
|
14
|
-
- cron:
|
14
|
+
- cron: "30 0 1,15 * *"
|
15
15
|
|
16
16
|
permissions:
|
17
17
|
contents: read
|
@@ -42,6 +42,8 @@ jobs:
|
|
42
42
|
with:
|
43
43
|
ref: ${{ github.event.pull_request.head.sha || github.ref }}
|
44
44
|
|
45
|
-
-
|
45
|
+
- run: npm install -g snyk
|
46
|
+
|
47
|
+
- run: snyk test
|
46
48
|
env:
|
47
49
|
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
data/.github/workflows/test.yml
CHANGED
@@ -14,7 +14,7 @@ permissions:
|
|
14
14
|
contents: read
|
15
15
|
|
16
16
|
concurrency:
|
17
|
-
group: ${{ github.workflow }}-${{ github.ref }}
|
17
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
18
18
|
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
|
19
19
|
|
20
20
|
env:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v5.16.0](https://github.com/auth0/ruby-auth0/tree/v5.16.0) (2023-11-13)
|
4
|
+
[Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.15.0...v5.16.0)
|
5
|
+
|
6
|
+
**Added**
|
7
|
+
- [SDK-4546] Add orgs in client credentials support [\#540](https://github.com/auth0/ruby-auth0/pull/540) ([adamjmcgrath](https://github.com/adamjmcgrath))
|
8
|
+
|
9
|
+
## [v5.15.0](https://github.com/auth0/ruby-auth0/tree/v5.15.0) (2023-10-30)
|
10
|
+
[Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.14.2...v5.15.0)
|
11
|
+
|
12
|
+
**Added**
|
13
|
+
- [SDK-4659] Add fields to get_organizations_members [\#532](https://github.com/auth0/ruby-auth0/pull/532) ([adamjmcgrath](https://github.com/adamjmcgrath))
|
14
|
+
|
3
15
|
## [v5.14.2](https://github.com/auth0/ruby-auth0/tree/v5.14.2) (2023-10-03)
|
4
16
|
|
5
17
|
[Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.14.1...v5.14.2)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
auth0 (5.
|
4
|
+
auth0 (5.16.0)
|
5
5
|
addressable (~> 2.8)
|
6
6
|
jwt (~> 2.7)
|
7
7
|
rest-client (~> 2.1)
|
@@ -11,31 +11,41 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
|
-
actionpack (7.
|
15
|
-
actionview (= 7.
|
16
|
-
activesupport (= 7.
|
17
|
-
|
14
|
+
actionpack (7.1.2)
|
15
|
+
actionview (= 7.1.2)
|
16
|
+
activesupport (= 7.1.2)
|
17
|
+
nokogiri (>= 1.8.5)
|
18
|
+
racc
|
19
|
+
rack (>= 2.2.4)
|
20
|
+
rack-session (>= 1.0.1)
|
18
21
|
rack-test (>= 0.6.3)
|
19
|
-
rails-dom-testing (~> 2.
|
20
|
-
rails-html-sanitizer (~> 1.
|
21
|
-
actionview (7.
|
22
|
-
activesupport (= 7.
|
22
|
+
rails-dom-testing (~> 2.2)
|
23
|
+
rails-html-sanitizer (~> 1.6)
|
24
|
+
actionview (7.1.2)
|
25
|
+
activesupport (= 7.1.2)
|
23
26
|
builder (~> 3.1)
|
24
|
-
erubi (~> 1.
|
25
|
-
rails-dom-testing (~> 2.
|
26
|
-
rails-html-sanitizer (~> 1.
|
27
|
-
activesupport (7.
|
27
|
+
erubi (~> 1.11)
|
28
|
+
rails-dom-testing (~> 2.2)
|
29
|
+
rails-html-sanitizer (~> 1.6)
|
30
|
+
activesupport (7.1.2)
|
31
|
+
base64
|
32
|
+
bigdecimal
|
28
33
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
34
|
+
connection_pool (>= 2.2.5)
|
35
|
+
drb
|
29
36
|
i18n (>= 1.6, < 2)
|
30
37
|
minitest (>= 5.1)
|
38
|
+
mutex_m
|
31
39
|
tzinfo (~> 2.0)
|
32
40
|
addressable (2.8.5)
|
33
41
|
public_suffix (>= 2.0.2, < 6.0)
|
34
42
|
ast (2.4.2)
|
35
|
-
base64 (0.
|
43
|
+
base64 (0.2.0)
|
44
|
+
bigdecimal (3.1.4)
|
36
45
|
builder (3.2.4)
|
37
46
|
coderay (1.1.3)
|
38
47
|
concurrent-ruby (1.2.2)
|
48
|
+
connection_pool (2.4.1)
|
39
49
|
coveralls (0.7.1)
|
40
50
|
multi_json (~> 1.3)
|
41
51
|
rest-client
|
@@ -53,10 +63,12 @@ GEM
|
|
53
63
|
dotenv-rails (2.8.1)
|
54
64
|
dotenv (= 2.8.1)
|
55
65
|
railties (>= 3.2)
|
66
|
+
drb (2.2.0)
|
67
|
+
ruby2_keywords
|
56
68
|
erubi (1.12.0)
|
57
69
|
faker (2.23.0)
|
58
70
|
i18n (>= 1.8.11, < 2)
|
59
|
-
ffi (1.16.
|
71
|
+
ffi (1.16.3)
|
60
72
|
formatador (1.1.0)
|
61
73
|
fuubar (2.5.1)
|
62
74
|
rspec-core (~> 3.0)
|
@@ -82,7 +94,7 @@ GEM
|
|
82
94
|
i18n (1.14.1)
|
83
95
|
concurrent-ruby (~> 1.0)
|
84
96
|
io-console (0.6.0)
|
85
|
-
irb (1.
|
97
|
+
irb (1.9.0)
|
86
98
|
rdoc
|
87
99
|
reline (>= 0.3.8)
|
88
100
|
json (2.6.3)
|
@@ -91,16 +103,17 @@ GEM
|
|
91
103
|
listen (3.8.0)
|
92
104
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
93
105
|
rb-inotify (~> 0.9, >= 0.9.10)
|
94
|
-
loofah (2.21.
|
106
|
+
loofah (2.21.4)
|
95
107
|
crass (~> 1.0.2)
|
96
108
|
nokogiri (>= 1.12.0)
|
97
109
|
lumberjack (1.2.9)
|
98
110
|
method_source (1.0.0)
|
99
111
|
mime-types (3.5.1)
|
100
112
|
mime-types-data (~> 3.2015)
|
101
|
-
mime-types-data (3.2023.
|
113
|
+
mime-types-data (3.2023.1003)
|
102
114
|
minitest (5.20.0)
|
103
115
|
multi_json (1.15.0)
|
116
|
+
mutex_m (0.2.0)
|
104
117
|
nenv (0.3.0)
|
105
118
|
netrc (0.11.0)
|
106
119
|
nokogiri (1.15.4-aarch64-linux)
|
@@ -115,22 +128,27 @@ GEM
|
|
115
128
|
nenv (~> 0.1)
|
116
129
|
shellany (~> 0.0)
|
117
130
|
parallel (1.23.0)
|
118
|
-
parser (3.2.2.
|
131
|
+
parser (3.2.2.4)
|
119
132
|
ast (~> 2.4.1)
|
120
133
|
racc
|
121
|
-
pp (0.
|
134
|
+
pp (0.5.0)
|
122
135
|
prettyprint
|
123
|
-
prettyprint (0.
|
136
|
+
prettyprint (0.2.0)
|
124
137
|
pry (0.14.2)
|
125
138
|
coderay (~> 1.1)
|
126
139
|
method_source (~> 1.0)
|
127
|
-
psych (5.1.
|
140
|
+
psych (5.1.1.1)
|
128
141
|
stringio
|
129
142
|
public_suffix (5.0.3)
|
130
|
-
racc (1.7.
|
131
|
-
rack (
|
143
|
+
racc (1.7.3)
|
144
|
+
rack (3.0.8)
|
145
|
+
rack-session (2.0.0)
|
146
|
+
rack (>= 3.0.0)
|
132
147
|
rack-test (2.1.0)
|
133
148
|
rack (>= 1.3)
|
149
|
+
rackup (2.1.0)
|
150
|
+
rack (>= 3)
|
151
|
+
webrick (~> 1.8)
|
134
152
|
rails-dom-testing (2.2.0)
|
135
153
|
activesupport (>= 5.0.0)
|
136
154
|
minitest
|
@@ -138,22 +156,23 @@ GEM
|
|
138
156
|
rails-html-sanitizer (1.6.0)
|
139
157
|
loofah (~> 2.21)
|
140
158
|
nokogiri (~> 1.14)
|
141
|
-
railties (7.
|
142
|
-
actionpack (= 7.
|
143
|
-
activesupport (= 7.
|
144
|
-
|
159
|
+
railties (7.1.2)
|
160
|
+
actionpack (= 7.1.2)
|
161
|
+
activesupport (= 7.1.2)
|
162
|
+
irb
|
163
|
+
rackup (>= 1.0.0)
|
145
164
|
rake (>= 12.2)
|
146
|
-
thor (~> 1.0)
|
147
|
-
zeitwerk (~> 2.
|
165
|
+
thor (~> 1.0, >= 1.2.2)
|
166
|
+
zeitwerk (~> 2.6)
|
148
167
|
rainbow (3.1.1)
|
149
|
-
rake (13.0
|
168
|
+
rake (13.1.0)
|
150
169
|
rb-fsevent (0.11.2)
|
151
170
|
rb-inotify (0.10.1)
|
152
171
|
ffi (~> 1.0)
|
153
|
-
rdoc (6.
|
172
|
+
rdoc (6.6.0)
|
154
173
|
psych (>= 4.0.0)
|
155
|
-
regexp_parser (2.8.
|
156
|
-
reline (0.
|
174
|
+
regexp_parser (2.8.2)
|
175
|
+
reline (0.4.0)
|
157
176
|
io-console (~> 0.5)
|
158
177
|
rest-client (2.1.0)
|
159
178
|
http-accept (>= 1.7.0, < 2.0)
|
@@ -175,25 +194,25 @@ GEM
|
|
175
194
|
diff-lcs (>= 1.2.0, < 2.0)
|
176
195
|
rspec-support (~> 3.12.0)
|
177
196
|
rspec-support (3.12.1)
|
178
|
-
rubocop (1.
|
179
|
-
base64 (~> 0.1.1)
|
197
|
+
rubocop (1.57.2)
|
180
198
|
json (~> 2.3)
|
181
199
|
language_server-protocol (>= 3.17.0)
|
182
200
|
parallel (~> 1.10)
|
183
|
-
parser (>= 3.2.2.
|
201
|
+
parser (>= 3.2.2.4)
|
184
202
|
rainbow (>= 2.2.2, < 4.0)
|
185
203
|
regexp_parser (>= 1.8, < 3.0)
|
186
204
|
rexml (>= 3.2.5, < 4.0)
|
187
205
|
rubocop-ast (>= 1.28.1, < 2.0)
|
188
206
|
ruby-progressbar (~> 1.7)
|
189
207
|
unicode-display_width (>= 2.4.0, < 3.0)
|
190
|
-
rubocop-ast (1.
|
208
|
+
rubocop-ast (1.30.0)
|
191
209
|
parser (>= 3.2.1.0)
|
192
|
-
rubocop-rails (2.
|
210
|
+
rubocop-rails (2.22.1)
|
193
211
|
activesupport (>= 4.2.0)
|
194
212
|
rack (>= 1.1)
|
195
213
|
rubocop (>= 1.33.0, < 2.0)
|
196
214
|
ruby-progressbar (1.13.0)
|
215
|
+
ruby2_keywords (0.0.5)
|
197
216
|
shellany (0.0.1)
|
198
217
|
simplecov (0.22.0)
|
199
218
|
docile (~> 1.1)
|
@@ -204,12 +223,12 @@ GEM
|
|
204
223
|
simplecov (~> 0.19)
|
205
224
|
simplecov-html (0.12.3)
|
206
225
|
simplecov_json_formatter (0.1.4)
|
207
|
-
stringio (3.0.
|
226
|
+
stringio (3.0.9)
|
208
227
|
sync (0.5.0)
|
209
228
|
term-ansicolor (1.7.1)
|
210
229
|
tins (~> 1.0)
|
211
230
|
terminal-notifier-guard (1.7.0)
|
212
|
-
thor (1.
|
231
|
+
thor (1.3.0)
|
213
232
|
timecop (0.9.8)
|
214
233
|
tins (1.32.1)
|
215
234
|
sync
|
@@ -217,13 +236,14 @@ GEM
|
|
217
236
|
concurrent-ruby (~> 1.0)
|
218
237
|
unf (0.1.4)
|
219
238
|
unf_ext
|
220
|
-
unf_ext (0.0.
|
239
|
+
unf_ext (0.0.9)
|
221
240
|
unicode-display_width (2.5.0)
|
222
241
|
vcr (6.2.0)
|
223
242
|
webmock (3.19.1)
|
224
243
|
addressable (>= 2.8.0)
|
225
244
|
crack (>= 0.3.2)
|
226
245
|
hashdiff (>= 0.4.0, < 2.0.0)
|
246
|
+
webrick (1.8.1)
|
227
247
|
zache (0.13.1)
|
228
248
|
zeitwerk (2.6.12)
|
229
249
|
|
@@ -31,7 +31,8 @@ module Auth0
|
|
31
31
|
request_params = {
|
32
32
|
grant_type: 'client_credentials',
|
33
33
|
client_id: client_id,
|
34
|
-
audience: audience
|
34
|
+
audience: audience,
|
35
|
+
organization: organization
|
35
36
|
}
|
36
37
|
|
37
38
|
populate_client_assertion_or_secret(request_params, client_id: client_id, client_secret: client_secret)
|
@@ -11,13 +11,15 @@ module Auth0
|
|
11
11
|
# @param audience [string] The audience of the client grant to retrieve.
|
12
12
|
# @param page [int] Page number to get, 0-based.
|
13
13
|
# @param per_page [int] Results per page if also passing a page number.
|
14
|
+
# @param allow_any_organization [bool] Optional filter on allow_any_organization.
|
14
15
|
# @return [json] Returns the client grants.
|
15
|
-
def client_grants (client_id: nil, audience: nil, page: nil, per_page: nil)
|
16
|
+
def client_grants (client_id: nil, audience: nil, page: nil, per_page: nil, allow_any_organization: nil)
|
16
17
|
request_params = {
|
17
18
|
client_id: client_id,
|
18
19
|
audience: audience,
|
19
20
|
page: page,
|
20
|
-
per_page: per_page
|
21
|
+
per_page: per_page,
|
22
|
+
allow_any_organization: allow_any_organization
|
21
23
|
}
|
22
24
|
get(client_grants_path, request_params)
|
23
25
|
end
|
@@ -54,6 +56,29 @@ module Auth0
|
|
54
56
|
end
|
55
57
|
alias update_client_grant patch_client_grant
|
56
58
|
|
59
|
+
|
60
|
+
# Get the organizations associated to a client grant.
|
61
|
+
# @param id [string] The client_grant_id of the client grant.
|
62
|
+
# @param options [hash] The Hash options used to define the paging of results
|
63
|
+
# * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
|
64
|
+
# * :page [integer] The page number. Zero based.
|
65
|
+
# * :from [string] For checkpoint pagination, the ID from which to start selection from.
|
66
|
+
# * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
|
67
|
+
# * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
|
68
|
+
# @return [json] Returns the organizations.
|
69
|
+
def get_client_grants_organizations(client_grant_id, options = {})
|
70
|
+
raise Auth0::InvalidParameter, 'Must specify a client grant id' if client_grant_id.to_s.empty?
|
71
|
+
request_params = {
|
72
|
+
per_page: options.fetch(:per_page, nil),
|
73
|
+
page: options.fetch(:page, nil),
|
74
|
+
from: options.fetch(:from, nil),
|
75
|
+
take: options.fetch(:take, nil),
|
76
|
+
include_totals: options.fetch(:include_totals, nil)
|
77
|
+
}
|
78
|
+
path = "#{client_grants_path}/#{client_grant_id}/organizations"
|
79
|
+
get(path, request_params)
|
80
|
+
end
|
81
|
+
|
57
82
|
private
|
58
83
|
|
59
84
|
# Client Grants API path
|
@@ -214,6 +214,8 @@ module Auth0
|
|
214
214
|
### Organization Member
|
215
215
|
|
216
216
|
# Get Members in a Organization
|
217
|
+
# Member roles are not sent by default. Use `fields=roles` to retrieve the roles assigned to each listed member.
|
218
|
+
# To use this parameter, you must include the `read:organization_member_roles scope` in the token.
|
217
219
|
# @see https://auth0.com/docs/api/management/v2/#!/Organizations/get_members
|
218
220
|
# @param organization_id [string] The Organization ID
|
219
221
|
# @param options [hash] The Hash options used to define the paging of rersults
|
@@ -222,6 +224,8 @@ module Auth0
|
|
222
224
|
# * :from [string] For checkpoint pagination, the ID from which to start selection from.
|
223
225
|
# * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
|
224
226
|
# * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
|
227
|
+
# * :fields [string] A comma separated list of fields to include or exclude from the result. If fields is left blank, all fields (except roles) are returned.
|
228
|
+
# * :include_fields [boolean] True if the fields specified are to be included in the result, false otherwise.
|
225
229
|
#
|
226
230
|
# @return [json] Returns the members for the given organization
|
227
231
|
def get_organizations_members(organization_id, options = {})
|
@@ -231,7 +235,9 @@ module Auth0
|
|
231
235
|
page: options.fetch(:page, nil),
|
232
236
|
from: options.fetch(:from, nil),
|
233
237
|
take: options.fetch(:take, nil),
|
234
|
-
include_totals: options.fetch(:include_totals, nil)
|
238
|
+
include_totals: options.fetch(:include_totals, nil),
|
239
|
+
fields: options.fetch(:fields, nil),
|
240
|
+
include_fields: options.fetch(:include_fields, nil)
|
235
241
|
}
|
236
242
|
path = "#{organizations_members_path(organization_id)}"
|
237
243
|
get(path, request_params)
|
@@ -324,6 +330,52 @@ module Auth0
|
|
324
330
|
end
|
325
331
|
alias remove_organizations_member_roles delete_organizations_member_roles
|
326
332
|
|
333
|
+
# Get client grants associated to an organization
|
334
|
+
# @param organization_id [string] The Organization ID
|
335
|
+
# @param options [hash] The Hash options used to define the paging of results
|
336
|
+
# * :client_id [string] The client_id of the client grant to retrieve.
|
337
|
+
# * :audience [string] The audience of the client grant to retrieve.
|
338
|
+
# * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
|
339
|
+
# * :page [integer] The page number. Zero based.
|
340
|
+
# * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
|
341
|
+
def get_organizations_client_grants(organization_id, options= {})
|
342
|
+
raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
|
343
|
+
request_params = {
|
344
|
+
client_id: options.fetch(:client_id, nil),
|
345
|
+
audience: options.fetch(:audience, nil),
|
346
|
+
per_page: options.fetch(:per_page, nil),
|
347
|
+
page: options.fetch(:page, nil),
|
348
|
+
include_totals: options.fetch(:include_totals, nil)
|
349
|
+
}
|
350
|
+
path = "#{organizations_client_grants_path(organization_id)}"
|
351
|
+
get(path, request_params)
|
352
|
+
end
|
353
|
+
|
354
|
+
# Associate a client grant with an organization
|
355
|
+
# @param organization_id [string] The Organization ID
|
356
|
+
# @param grant_id [string] The Client Grant ID you want to associate to the Organization.
|
357
|
+
def create_organizations_client_grant(organization_id, grant_id)
|
358
|
+
raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
|
359
|
+
raise Auth0::InvalidParameter, 'Must supply a valid grant_id' if grant_id.to_s.empty?
|
360
|
+
|
361
|
+
body = {}
|
362
|
+
body[:grant_id] = grant_id
|
363
|
+
|
364
|
+
path = "#{organizations_client_grants_path(organization_id)}"
|
365
|
+
post(path, body)
|
366
|
+
end
|
367
|
+
|
368
|
+
# Remove a client grant from an organization
|
369
|
+
# @param organization_id [string] The Organization ID
|
370
|
+
# @param grant_id [string] The Client Grant ID you want to remove from the Organization.
|
371
|
+
def delete_organizations_client_grant(organization_id, grant_id)
|
372
|
+
raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
|
373
|
+
raise Auth0::InvalidParameter, 'Must supply a valid grant_id' if grant_id.to_s.empty?
|
374
|
+
|
375
|
+
path = "#{organizations_path}/#{organization_id}/client-grants/#{grant_id}"
|
376
|
+
delete(path)
|
377
|
+
end
|
378
|
+
|
327
379
|
private
|
328
380
|
# Organizations API path
|
329
381
|
def organizations_path
|
@@ -345,6 +397,10 @@ module Auth0
|
|
345
397
|
def organizations_invitations_path(org_id)
|
346
398
|
"#{organizations_path}/#{org_id}/invitations"
|
347
399
|
end
|
400
|
+
|
401
|
+
def organizations_client_grants_path(org_id)
|
402
|
+
"#{organizations_path}/#{org_id}/client-grants"
|
403
|
+
end
|
348
404
|
end
|
349
405
|
end
|
350
406
|
end
|
data/lib/auth0/version.rb
CHANGED
@@ -56,6 +56,7 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
56
56
|
grant_type: 'client_credentials',
|
57
57
|
client_id: client_id,
|
58
58
|
audience: api_identifier,
|
59
|
+
organization: nil,
|
59
60
|
client_secret: client_secret
|
60
61
|
}.to_json
|
61
62
|
))
|
@@ -74,6 +75,33 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
74
75
|
expect(result.expires_in).not_to be_nil
|
75
76
|
end
|
76
77
|
|
78
|
+
it 'requests a new token using organization' do
|
79
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
80
|
+
method: :post,
|
81
|
+
url: 'https://samples.auth0.com/oauth/token',
|
82
|
+
payload: {
|
83
|
+
grant_type: 'client_credentials',
|
84
|
+
client_id: client_id,
|
85
|
+
audience: api_identifier,
|
86
|
+
organization: 'foo',
|
87
|
+
client_secret: client_secret
|
88
|
+
}.to_json
|
89
|
+
))
|
90
|
+
.and_return(StubResponse.new({
|
91
|
+
"access_token" => "test_response",
|
92
|
+
"expires_in" => 86400,
|
93
|
+
"scope" => "scope"},
|
94
|
+
true,
|
95
|
+
200))
|
96
|
+
|
97
|
+
result = client_secret_instance.send :api_token, audience: api_identifier, organization: 'foo'
|
98
|
+
|
99
|
+
expect(result).to be_a_kind_of(Auth0::ApiToken)
|
100
|
+
expect(result.access_token).not_to be_nil
|
101
|
+
expect(result.scope).not_to be_nil
|
102
|
+
expect(result.expires_in).not_to be_nil
|
103
|
+
end
|
104
|
+
|
77
105
|
it 'requests a new token using client_assertion' do
|
78
106
|
expect(RestClient::Request).to receive(:execute) do |arg|
|
79
107
|
expect(arg).to match(
|
@@ -14,6 +14,7 @@ describe Auth0::Api::V2::ClientGrants do
|
|
14
14
|
expect(@instance).to receive(:get).with(
|
15
15
|
'/api/v2/client-grants', {
|
16
16
|
client_id: nil,
|
17
|
+
allow_any_organization: nil,
|
17
18
|
audience: nil,
|
18
19
|
page: nil,
|
19
20
|
per_page: nil
|
@@ -27,6 +28,7 @@ describe Auth0::Api::V2::ClientGrants do
|
|
27
28
|
expect(@instance).to receive(:get).with(
|
28
29
|
'/api/v2/client-grants', {
|
29
30
|
client_id: '1',
|
31
|
+
allow_any_organization: nil,
|
30
32
|
audience: audience,
|
31
33
|
page: nil,
|
32
34
|
per_page: nil
|
@@ -38,12 +40,25 @@ describe Auth0::Api::V2::ClientGrants do
|
|
38
40
|
expect(@instance).to receive(:get).with(
|
39
41
|
'/api/v2/client-grants', {
|
40
42
|
client_id: nil,
|
43
|
+
allow_any_organization: nil,
|
41
44
|
audience: nil,
|
42
45
|
page: 1,
|
43
46
|
per_page: 2
|
44
47
|
})
|
45
48
|
expect { @instance.client_grants(page: 1, per_page: 2) }.not_to raise_error
|
46
49
|
end
|
50
|
+
|
51
|
+
it 'is expected to send get /api/v2/client-grants/ with allow_any_organization' do
|
52
|
+
expect(@instance).to receive(:get).with(
|
53
|
+
'/api/v2/client-grants', {
|
54
|
+
client_id: nil,
|
55
|
+
allow_any_organization: true,
|
56
|
+
audience: nil,
|
57
|
+
page: nil,
|
58
|
+
per_page: nil
|
59
|
+
})
|
60
|
+
expect { @instance.client_grants(allow_any_organization: true) }.not_to raise_error
|
61
|
+
end
|
47
62
|
end
|
48
63
|
|
49
64
|
context '.create_client_grant' do
|
@@ -73,4 +88,19 @@ describe Auth0::Api::V2::ClientGrants do
|
|
73
88
|
it { expect { @instance.patch_client_grant('', nil) }.to raise_error 'Must specify a client grant id' }
|
74
89
|
it { expect { @instance.patch_client_grant('some', nil) }.to raise_error 'Must specify a valid body' }
|
75
90
|
end
|
91
|
+
|
92
|
+
context '.get_client_grants_organizations' do
|
93
|
+
it { expect(@instance).to respond_to(:get_client_grants_organizations) }
|
94
|
+
it 'is expected to send get to /api/v2/client-grants/organizations' do
|
95
|
+
expect(@instance).to receive(:get).with('/api/v2/client-grants/1/organizations', {
|
96
|
+
per_page: nil,
|
97
|
+
page: nil,
|
98
|
+
from: nil,
|
99
|
+
take: nil,
|
100
|
+
include_totals: nil
|
101
|
+
})
|
102
|
+
expect { @instance.get_client_grants_organizations('1') }.not_to raise_error
|
103
|
+
end
|
104
|
+
it { expect { @instance.get_client_grants_organizations('') }.to raise_error 'Must specify a client grant id' }
|
105
|
+
end
|
76
106
|
end
|
@@ -451,7 +451,9 @@ describe Auth0::Api::V2::Organizations do
|
|
451
451
|
page: nil,
|
452
452
|
from: nil,
|
453
453
|
take: nil,
|
454
|
-
include_totals: nil
|
454
|
+
include_totals: nil,
|
455
|
+
fields: nil,
|
456
|
+
include_fields: nil
|
455
457
|
})
|
456
458
|
expect do
|
457
459
|
@instance.get_organizations_members('org_id')
|
@@ -465,7 +467,9 @@ describe Auth0::Api::V2::Organizations do
|
|
465
467
|
page: 1,
|
466
468
|
from: 'org_id',
|
467
469
|
take: 50,
|
468
|
-
include_totals: true
|
470
|
+
include_totals: true,
|
471
|
+
fields: nil,
|
472
|
+
include_fields: nil
|
469
473
|
})
|
470
474
|
expect do
|
471
475
|
@instance.get_organizations_members(
|
@@ -478,6 +482,26 @@ describe Auth0::Api::V2::Organizations do
|
|
478
482
|
)
|
479
483
|
end.not_to raise_error
|
480
484
|
end
|
485
|
+
|
486
|
+
it 'is expected to get /api/v2/organizations with custom fields' do
|
487
|
+
expect(@instance).to receive(:get).with(
|
488
|
+
'/api/v2/organizations/org_id/members', {
|
489
|
+
per_page: nil,
|
490
|
+
page: nil,
|
491
|
+
from: nil,
|
492
|
+
take: nil,
|
493
|
+
include_totals: nil,
|
494
|
+
fields: 'foo,bar',
|
495
|
+
include_fields: false
|
496
|
+
})
|
497
|
+
expect do
|
498
|
+
@instance.get_organizations_members(
|
499
|
+
'org_id',
|
500
|
+
fields: 'foo,bar',
|
501
|
+
include_fields: false
|
502
|
+
)
|
503
|
+
end.not_to raise_error
|
504
|
+
end
|
481
505
|
end
|
482
506
|
|
483
507
|
context '.create_organizations_members' do
|
@@ -615,4 +639,70 @@ describe Auth0::Api::V2::Organizations do
|
|
615
639
|
expect { @instance.delete_organizations_member_roles('org_id', 'user_id') }.to raise_error 'Must supply an array of role ids'
|
616
640
|
end
|
617
641
|
end
|
642
|
+
|
643
|
+
context '.get_organizations_client_grants' do
|
644
|
+
it 'is expected to respond to a get_organizations_client_grants method' do
|
645
|
+
expect(@instance).to respond_to(:get_organizations_client_grants)
|
646
|
+
end
|
647
|
+
|
648
|
+
it 'is expected to get /api/v2/organizations/org_id/client-grants' do
|
649
|
+
expect(@instance).to receive(:get).with(
|
650
|
+
'/api/v2/organizations/org_id/client-grants', {
|
651
|
+
per_page: nil,
|
652
|
+
page: nil,
|
653
|
+
client_id: nil,
|
654
|
+
audience: nil,
|
655
|
+
include_totals: nil
|
656
|
+
})
|
657
|
+
expect { @instance.get_organizations_client_grants('org_id') }.not_to raise_error
|
658
|
+
end
|
659
|
+
|
660
|
+
it 'is expected to get /api/v2/organizations/org_id/client-grants with custom parameters' do
|
661
|
+
expect(@instance).to receive(:get).with(
|
662
|
+
'/api/v2/organizations/org_id/client-grants', {
|
663
|
+
per_page: 10,
|
664
|
+
page: 1,
|
665
|
+
client_id: 'client_id',
|
666
|
+
audience: 'api',
|
667
|
+
include_totals: true
|
668
|
+
})
|
669
|
+
expect do
|
670
|
+
@instance.get_organizations_client_grants(
|
671
|
+
'org_id',
|
672
|
+
per_page: 10,
|
673
|
+
page: 1,
|
674
|
+
client_id: 'client_id',
|
675
|
+
audience: 'api',
|
676
|
+
include_totals: true
|
677
|
+
)
|
678
|
+
end.not_to raise_error
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
682
|
+
context '.create_organizations_client_grants' do
|
683
|
+
it 'is expected to respond to a create_organizations_client_grants method' do
|
684
|
+
expect(@instance).to respond_to(:create_organizations_client_grant)
|
685
|
+
end
|
686
|
+
|
687
|
+
it 'is expected to post /api/v2/organizations/org_id/client-grants' do
|
688
|
+
expect(@instance).to receive(:post).with(
|
689
|
+
'/api/v2/organizations/org_id/client-grants', {
|
690
|
+
grant_id: 'grant_id'
|
691
|
+
})
|
692
|
+
expect { @instance.create_organizations_client_grant('org_id', 'grant_id') }.not_to raise_error
|
693
|
+
end
|
694
|
+
end
|
695
|
+
|
696
|
+
context '.delete_organizations_client_grant' do
|
697
|
+
it 'is expected to respond to a delete_organizations_client_grant method' do
|
698
|
+
expect(@instance).to respond_to(:delete_organizations_client_grant)
|
699
|
+
end
|
700
|
+
|
701
|
+
it 'is expected to delete /api/v2/organizations/org_id/client-grants' do
|
702
|
+
expect(@instance).to receive(:delete).with(
|
703
|
+
'/api/v2/organizations/org_id/client-grants/grant_id')
|
704
|
+
expect { @instance.delete_organizations_client_grant('org_id', 'grant_id') }.not_to raise_error
|
705
|
+
end
|
706
|
+
end
|
707
|
+
|
618
708
|
end
|
@@ -64,7 +64,8 @@ describe Auth0::Mixins::Initializer do
|
|
64
64
|
grant_type: 'client_credentials',
|
65
65
|
client_id: client_id,
|
66
66
|
client_secret: client_secret,
|
67
|
-
audience: api_identifier
|
67
|
+
audience: api_identifier,
|
68
|
+
organization: nil
|
68
69
|
}
|
69
70
|
|
70
71
|
expect(RestClient::Request).to receive(:execute) do |arg|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auth0
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Auth0
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-11-13 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|
@@ -203,7 +203,6 @@ extensions: []
|
|
203
203
|
extra_rdoc_files: []
|
204
204
|
files:
|
205
205
|
- ".bundle/config"
|
206
|
-
- ".circleci/config.yml"
|
207
206
|
- ".devcontainer/Dockerfile"
|
208
207
|
- ".devcontainer/devcontainer.json"
|
209
208
|
- ".env.example"
|
data/.circleci/config.yml
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
version: 2.1
|
2
|
-
orbs:
|
3
|
-
ship: auth0/ship@0
|
4
|
-
codecov: codecov/codecov@3
|
5
|
-
|
6
|
-
matrix_ruby_versions: &matrix_ruby_versions
|
7
|
-
matrix:
|
8
|
-
parameters:
|
9
|
-
ruby_version: ["3.0", "3.1", "3.2"]
|
10
|
-
# Default version of ruby to use for lint and publishing
|
11
|
-
default_ruby_version: &default_ruby_version "3.2"
|
12
|
-
|
13
|
-
executors:
|
14
|
-
ruby-image:
|
15
|
-
parameters:
|
16
|
-
ruby_version:
|
17
|
-
type: string
|
18
|
-
default: *default_ruby_version
|
19
|
-
docker:
|
20
|
-
- image: cimg/ruby:<< parameters.ruby_version >>
|
21
|
-
|
22
|
-
jobs:
|
23
|
-
run-tests:
|
24
|
-
parameters:
|
25
|
-
ruby_version:
|
26
|
-
type: string
|
27
|
-
default: *default_ruby_version
|
28
|
-
executor:
|
29
|
-
name: ruby-image
|
30
|
-
ruby_version: << parameters.ruby_version >>
|
31
|
-
steps:
|
32
|
-
- checkout
|
33
|
-
- run: gem install bundler:2.3.22
|
34
|
-
- restore_cache:
|
35
|
-
key: gems-v2-{{ checksum "Gemfile.lock" }}
|
36
|
-
- run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
|
37
|
-
- save_cache:
|
38
|
-
key: gems-v2-{{ checksum "Gemfile.lock" }}
|
39
|
-
paths:
|
40
|
-
- vendor/bundle
|
41
|
-
# Must define DOMAIN, CLIENT_ID, CLIENT_SECRET and MASTER_JWT env
|
42
|
-
- run: bundle exec rake test
|
43
|
-
- codecov/upload:
|
44
|
-
file: /home/circleci/project/coverage/coverage.xml
|
45
|
-
|
46
|
-
workflows:
|
47
|
-
tests:
|
48
|
-
jobs:
|
49
|
-
- run-tests:
|
50
|
-
<<: *matrix_ruby_versions
|
51
|
-
- ship/ruby-publish:
|
52
|
-
context:
|
53
|
-
- publish-rubygems
|
54
|
-
- publish-gh
|
55
|
-
filters:
|
56
|
-
branches:
|
57
|
-
only:
|
58
|
-
- master
|
59
|
-
requires:
|
60
|
-
- run-tests
|