Skip to content

Commit 1dd8ff5

Browse files
Fix schema translation for
scope_aliases
1 parent 58716aa commit 1dd8ff5

File tree

3 files changed

+14
-34
lines changed

3 files changed

+14
-34
lines changed

deps/rabbitmq_auth_backend_oauth2/priv/schema/rabbitmq_auth_backend_oauth2.schema

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@
7474
end}.
7575

7676
{mapping,
77-
"auth_oauth2.scope_aliases.$alias",
77+
"auth_oauth2.scope_aliases.$index.alias",
78+
"rabbitmq_auth_backend_oauth2.scope_aliases",
79+
[{datatype, string}]}.
80+
81+
{mapping,
82+
"auth_oauth2.scope_aliases.$index.scope",
7883
"rabbitmq_auth_backend_oauth2.scope_aliases",
7984
[{datatype, string}]}.
8085

deps/rabbitmq_auth_backend_oauth2/src/rabbit_oauth2_schema.erl

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,28 @@ extract_key_as_binary({Name,_}) -> list_to_binary(Name).
2020
extract_value({_Name,V}) -> V.
2121

2222
-spec translate_scope_aliases([{list(), binary()}]) -> map().
23-
translate_scope_aliases(Conf) ->
23+
translate_scope_aliases(Conf) ->
2424
Settings = cuttlefish_variable:filter_by_prefix("auth_oauth2.scope_aliases", Conf),
25-
maps:merge(extract_scope_aliases_as_a_map(Settings),
26-
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings)).
27-
25+
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings).
26+
2827
convert_space_separated_string_to_list_of_binaries(String) ->
2928
[ list_to_binary(V) || V <- string:tokens(String, " ")].
3029

31-
extract_scope_aliases_as_a_map(Settings) ->
32-
maps:from_list([{
33-
list_to_binary(K),
34-
convert_space_separated_string_to_list_of_binaries(V)
35-
} || {["auth_oauth2", "scope_aliases", K], V} <- Settings ]).
3630
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings) ->
3731
KeyFun = fun extract_key_as_binary/1,
3832
ValueFun = fun extract_value/1,
3933

40-
List0 = [{K, {list_to_atom(Attr), list_to_binary(V)}}
41-
|| {["auth_oauth2", "scope_aliases", K, Attr], V} <- Settings ],
42-
List1 = maps:to_list(maps:groups_from_list(KeyFun, ValueFun, List0)),
34+
List0 = [{Index, {list_to_atom(Attr), V}}
35+
|| {["auth_oauth2", "scope_aliases", Index, Attr], V} <- Settings ],
36+
List1 = maps:to_list(maps:groups_from_list(KeyFun, ValueFun, List0)),
4337
maps:from_list([
4438
extract_scope_alias_mapping(Proplist) || {_, Proplist} <- List1]).
4539

4640
extract_scope_alias_mapping(Proplist) ->
4741
Alias =
4842
case proplists:get_value(alias, Proplist) of
4943
undefined -> {error, missing_alias_attribute};
50-
A -> A
44+
A -> list_to_binary(A)
5145
end,
5246
Scope =
5347
case proplists:get_value(scope, Proplist) of

deps/rabbitmq_auth_backend_oauth2/test/config_schema_SUITE_data/rabbitmq_auth_backend_oauth2.snippets

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -197,25 +197,6 @@
197197
]}
198198
],[]
199199
},
200-
{scope_aliases_1,
201-
"auth_oauth2.resource_server_id = new_resource_server_id
202-
auth_oauth2.scope_aliases.admin = rabbitmq.tag:administrator
203-
auth_oauth2.scope_aliases.developer = rabbitmq.tag:management rabbitmq.read:*/*",
204-
[
205-
{rabbitmq_auth_backend_oauth2, [
206-
{resource_server_id,<<"new_resource_server_id">>},
207-
{scope_aliases, #{
208-
<<"admin">> => [
209-
<<"rabbitmq.tag:administrator">>
210-
],
211-
<<"developer">> => [
212-
<<"rabbitmq.tag:administrator">>,
213-
<<"rabbitmq.read:*/*">>
214-
]
215-
}}
216-
]}
217-
], []
218-
},
219200
{scope_aliases_2,
220201
"auth_oauth2.resource_server_id = new_resource_server_id
221202
auth_oauth2.scope_aliases.1.alias = admin
@@ -230,7 +211,7 @@
230211
<<"rabbitmq.tag:administrator">>
231212
],
232213
<<"developer">> => [
233-
<<"rabbitmq.tag:administrator">>,
214+
<<"rabbitmq.tag:management">>,
234215
<<"rabbitmq.read:*/*">>
235216
]
236217
}}

0 commit comments

Comments
 (0)