Skip to content

Commit c025270

Browse files
Fix schema translation for
scope_aliases
1 parent 6891fe3 commit c025270

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
@@ -19,34 +19,28 @@ extract_key_as_binary({Name,_}) -> list_to_binary(Name).
1919
extract_value({_Name,V}) -> V.
2020

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

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

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

4539
extract_scope_alias_mapping(Proplist) ->
4640
Alias =
4741
case proplists:get_value(alias, Proplist) of
4842
undefined -> {error, missing_alias_attribute};
49-
A -> A
43+
A -> list_to_binary(A)
5044
end,
5145
Scope =
5246
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
@@ -185,25 +185,6 @@
185185
]}
186186
],[]
187187
},
188-
{scope_aliases_1,
189-
"auth_oauth2.resource_server_id = new_resource_server_id
190-
auth_oauth2.scope_aliases.admin = rabbitmq.tag:administrator
191-
auth_oauth2.scope_aliases.developer = rabbitmq.tag:management rabbitmq.read:*/*",
192-
[
193-
{rabbitmq_auth_backend_oauth2, [
194-
{resource_server_id,<<"new_resource_server_id">>},
195-
{scope_aliases, #{
196-
<<"admin">> => [
197-
<<"rabbitmq.tag:administrator">>
198-
],
199-
<<"developer">> => [
200-
<<"rabbitmq.tag:administrator">>,
201-
<<"rabbitmq.read:*/*">>
202-
]
203-
}}
204-
]}
205-
], []
206-
},
207188
{scope_aliases_2,
208189
"auth_oauth2.resource_server_id = new_resource_server_id
209190
auth_oauth2.scope_aliases.1.alias = admin
@@ -218,7 +199,7 @@
218199
<<"rabbitmq.tag:administrator">>
219200
],
220201
<<"developer">> => [
221-
<<"rabbitmq.tag:administrator">>,
202+
<<"rabbitmq.tag:management">>,
222203
<<"rabbitmq.read:*/*">>
223204
]
224205
}}

0 commit comments

Comments
 (0)