From f4f5281b166dbc923f1baed88da7005a1b8d6cc7 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 5 Jan 2022 22:06:50 +0800 Subject: [PATCH] fix: authz headers default value --- .../emqx_authz/src/emqx_authz_api_sources.erl | 19 ++++++++++++++++--- apps/emqx_authz/src/emqx_authz_schema.erl | 4 ++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/apps/emqx_authz/src/emqx_authz_api_sources.erl b/apps/emqx_authz/src/emqx_authz_api_sources.erl index df5a6c819..d9699d968 100644 --- a/apps/emqx_authz/src/emqx_authz_api_sources.erl +++ b/apps/emqx_authz/src/emqx_authz_api_sources.erl @@ -412,9 +412,22 @@ get_raw_sources() -> RawSources = emqx:get_raw_config([authorization, sources], []), Schema = #{roots => emqx_authz_schema:fields("authorization"), fields => #{}}, Conf = #{<<"sources">> => RawSources}, - #{<<"sources">> := Sources} = hocon_schema:check_plain(Schema, Conf, - #{only_fill_defaults => true}), - Sources. + #{<<"sources">> := Sources} = hocon_schema:check_plain(Schema, Conf, #{only_fill_defaults => true}), + merge_default_headers(Sources). + +merge_default_headers(Sources) -> + lists:map(fun(Source) -> + Convert = + case Source of + #{<<"method">> := <<"get">>} -> + emqx_authz_schema:headers_no_content_type(converter); + #{<<"method">> := <<"post">>} -> + emqx_authz_schema:headers(converter); + _ -> fun(H) -> H end + end, + Headers = Convert(maps:get(<<"headers">>, Source, #{})), + Source#{<<"headers">> => Headers} + end, Sources). get_raw_source(Type) -> lists:filter(fun (#{<<"type">> := T}) -> diff --git a/apps/emqx_authz/src/emqx_authz_schema.erl b/apps/emqx_authz/src/emqx_authz_schema.erl index ef5a7c68b..998c5fca9 100644 --- a/apps/emqx_authz/src/emqx_authz_schema.erl +++ b/apps/emqx_authz/src/emqx_authz_schema.erl @@ -31,6 +31,10 @@ , fields/1 , validations/0 ]). +-export([ + headers_no_content_type/1, + headers/1 + ]). -import(emqx_schema, [mk_duration/2]). -include_lib("hocon/include/hoconsc.hrl").