From 4f12d45436f6c4b524ff36010e66cac3eb36fd3b Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 24 Apr 2024 15:34:11 +0800 Subject: [PATCH 1/2] chore: provided more specific error for wrong import method --- .../src/emqx_auth_mnesia.app.src | 2 +- apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl | 4 ++++ .../test/emqx_authn_mnesia_SUITE.erl | 16 ++++++++++++++++ changes/ce/feat-12923.en.md | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 changes/ce/feat-12923.en.md diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src index a91849d24..9a3c51002 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_auth_mnesia, [ {description, "EMQX Buitl-in Database Authentication and Authorization"}, - {vsn, "0.1.4"}, + {vsn, "0.1.5"}, {registered, []}, {mod, {emqx_auth_mnesia_app, []}}, {applications, [ diff --git a/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl index eec46d831..3ec0867c8 100644 --- a/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl +++ b/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl @@ -527,6 +527,10 @@ find_password_hash(hash, User = #{<<"password_hash">> := PasswordHash}, _) -> {PasswordHash, maps:get(<<"salt">>, User, <<>>)}; find_password_hash(plain, #{<<"password">> := Password}, Algorithm) -> emqx_authn_password_hashing:hash(Algorithm, Password); +find_password_hash(hash, _User, _) -> + error("hash_import_required_password_hash_field"); +find_password_hash(plain, _User, _Algorithm) -> + error("plain_import_required_password_field"); find_password_hash(_, _, _) -> error(bad_format). diff --git a/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl index c667901cb..f1b6c4de5 100644 --- a/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl +++ b/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl @@ -228,6 +228,14 @@ t_import_users(_) -> State ) ), + %% import plain.json with hash method + ?assertEqual( + {error, "hash_import_required_password_hash_field"}, + emqx_authn_mnesia:import_users( + sample_filename_and_data(hash, <<"user-credentials-plain.json">>), + State + ) + ), ?assertEqual( {error, bad_format}, @@ -289,6 +297,14 @@ t_import_users_plain(_) -> State ) ), + %% import hash.json with plain method + ?assertEqual( + {error, "plain_import_required_password_field"}, + emqx_authn_mnesia:import_users( + sample_filename_and_data(plain, <<"user-credentials.json">>), + State + ) + ), ?assertEqual( ok, diff --git a/changes/ce/feat-12923.en.md b/changes/ce/feat-12923.en.md new file mode 100644 index 000000000..9721ea43a --- /dev/null +++ b/changes/ce/feat-12923.en.md @@ -0,0 +1 @@ +Provided more specific error when importing wrong format into builtin authenticate database. From 2a2da3766e4ae482ac0e33e0278020c385d46503 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Thu, 25 Apr 2024 09:16:53 +0800 Subject: [PATCH 2/2] chore: apply suggestions from code review Co-authored-by: Zaiming (Stone) Shi --- apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl | 4 ++-- apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl index 3ec0867c8..0c9631896 100644 --- a/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl +++ b/apps/emqx_auth_mnesia/src/emqx_authn_mnesia.erl @@ -528,9 +528,9 @@ find_password_hash(hash, User = #{<<"password_hash">> := PasswordHash}, _) -> find_password_hash(plain, #{<<"password">> := Password}, Algorithm) -> emqx_authn_password_hashing:hash(Algorithm, Password); find_password_hash(hash, _User, _) -> - error("hash_import_required_password_hash_field"); + error("hash_import_requires_password_hash_field"); find_password_hash(plain, _User, _Algorithm) -> - error("plain_import_required_password_field"); + error("plain_import_requires_password_field"); find_password_hash(_, _, _) -> error(bad_format). diff --git a/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl index f1b6c4de5..54409a73f 100644 --- a/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl +++ b/apps/emqx_auth_mnesia/test/emqx_authn_mnesia_SUITE.erl @@ -230,7 +230,7 @@ t_import_users(_) -> ), %% import plain.json with hash method ?assertEqual( - {error, "hash_import_required_password_hash_field"}, + {error, "hash_import_requires_password_hash_field"}, emqx_authn_mnesia:import_users( sample_filename_and_data(hash, <<"user-credentials-plain.json">>), State @@ -299,7 +299,7 @@ t_import_users_plain(_) -> ), %% import hash.json with plain method ?assertEqual( - {error, "plain_import_required_password_field"}, + {error, "plain_import_requires_password_field"}, emqx_authn_mnesia:import_users( sample_filename_and_data(plain, <<"user-credentials.json">>), State