chore(auth): simplify schema injection

This commit is contained in:
Ilya Averyanov 2023-08-07 11:38:21 +03:00
parent 8a3e8ee528
commit f00f4568dc
3 changed files with 11 additions and 19 deletions

View File

@ -222,7 +222,7 @@ roots(high) ->
ref(?EMQX_AUTHORIZATION_CONFIG_ROOT_NAME),
#{importance => ?IMPORTANCE_HIDDEN}
)}
] ++ emqx_schema_hooks:injection_point('roots.high');
] ++ emqx_schema_hooks:injection_point('authentication');
roots(medium) ->
[
{"broker",
@ -1749,7 +1749,7 @@ mqtt_listener(Bind) ->
default => <<"3s">>
}
)}
] ++ emqx_schema_hooks:injection_point('mqtt.listener').
] ++ emqx_schema_hooks:injection_point('listeners.authentication').
base_listener(Bind) ->
[

View File

@ -28,9 +28,7 @@
-define(MODULE_PT_KEY(MOD_NAME), {?MODULE, mod, MOD_NAME}).
-export([
inject_fields/3,
injection_point/1,
inject_fields_from_mod/1
]).
@ -45,17 +43,7 @@
%%--------------------------------------------------------------------
injection_point(PointName) ->
InjectedFields = persistent_term:get(?HOOKPOINT_PT_KEY(PointName), #{}),
lists:concat(maps:values(InjectedFields)).
inject_fields(PointName, Name, Fields) ->
Key = ?HOOKPOINT_PT_KEY(PointName),
InjectedFields = persistent_term:get(Key, #{}),
persistent_term:put(Key, InjectedFields#{Name => Fields}).
%%--------------------------------------------------------------------
%% Internal API
%%--------------------------------------------------------------------
persistent_term:get(?HOOKPOINT_PT_KEY(PointName), []).
inject_fields_from_mod(Module) ->
case persistent_term:get(?MODULE_PT_KEY(Module), false) of
@ -105,10 +93,14 @@ do_inject_fields_from_mod(Module) ->
ok
end.
do_inject_fields_from_mod(Module, HookFields) ->
do_inject_fields_from_mod(_Module, HookFields) ->
maps:foreach(
fun(PointName, Fields) ->
inject_fields(PointName, Module, Fields)
inject_fields(PointName, Fields)
end,
HookFields
).
inject_fields(PointName, Fields) ->
Key = ?HOOKPOINT_PT_KEY(PointName),
persistent_term:put(Key, Fields).

View File

@ -42,8 +42,8 @@ roots() -> [].
injected_fields() ->
#{
'roots.high' => global_auth_fields(),
'mqtt.listener' => mqtt_listener_auth_fields()
'authentication' => global_auth_fields(),
'listeners.authentication' => mqtt_listener_auth_fields()
}.
tags() ->