fix(authn): check authenticator config existence in pre-update callback
prior to this change, the authenticator existence check was done in the post-update callback, this causes confusion as teh list already contains duplication.
This commit is contained in:
parent
00198abfd7
commit
522bd935ba
|
@ -71,9 +71,15 @@ pre_config_update(_, UpdateReq, OldConfig) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
do_pre_config_update({create_authenticator, ChainName, Config}, OldConfig) ->
|
do_pre_config_update({create_authenticator, ChainName, Config}, OldConfig) ->
|
||||||
|
NewId = authenticator_id(Config),
|
||||||
|
case lists:filter(fun(OldConfig0) -> authenticator_id(OldConfig0) =:= NewId end, OldConfig) of
|
||||||
|
[] ->
|
||||||
CertsDir = certs_dir(ChainName, Config),
|
CertsDir = certs_dir(ChainName, Config),
|
||||||
NConfig = convert_certs(CertsDir, Config),
|
NConfig = convert_certs(CertsDir, Config),
|
||||||
{ok, OldConfig ++ [NConfig]};
|
{ok, OldConfig ++ [NConfig]};
|
||||||
|
[_] ->
|
||||||
|
{error, {already_exists, {authenticator, NewId}}}
|
||||||
|
end;
|
||||||
do_pre_config_update({delete_authenticator, _ChainName, AuthenticatorID}, OldConfig) ->
|
do_pre_config_update({delete_authenticator, _ChainName, AuthenticatorID}, OldConfig) ->
|
||||||
NewConfig = lists:filter(
|
NewConfig = lists:filter(
|
||||||
fun(OldConfig0) ->
|
fun(OldConfig0) ->
|
||||||
|
@ -257,9 +263,12 @@ clear_certs(CertsDir, Config) ->
|
||||||
ok = emqx_tls_lib:delete_ssl_files(CertsDir, undefined, OldSSL).
|
ok = emqx_tls_lib:delete_ssl_files(CertsDir, undefined, OldSSL).
|
||||||
|
|
||||||
get_authenticator_config(AuthenticatorID, AuthenticatorsConfig) ->
|
get_authenticator_config(AuthenticatorID, AuthenticatorsConfig) ->
|
||||||
case [C0 || C0 <- AuthenticatorsConfig, AuthenticatorID == authenticator_id(C0)] of
|
case
|
||||||
[C | _] -> C;
|
lists:filter(fun(C) -> AuthenticatorID =:= authenticator_id(C) end, AuthenticatorsConfig)
|
||||||
[] -> {error, not_found}
|
of
|
||||||
|
[C] -> C;
|
||||||
|
[] -> {error, not_found};
|
||||||
|
_ -> error({duplicated_authenticator_id, AuthenticatorsConfig})
|
||||||
end.
|
end.
|
||||||
|
|
||||||
split_by_id(ID, AuthenticatorsConfig) ->
|
split_by_id(ID, AuthenticatorsConfig) ->
|
||||||
|
|
Loading…
Reference in New Issue