From 53bc2d9d584001a1cdd27bb8f5c6f862c1538130 Mon Sep 17 00:00:00 2001 From: Ilya Averyanov Date: Wed, 12 Oct 2022 14:53:45 +0300 Subject: [PATCH] fix(jwt): restore legacy emqx_auth_jwt hook interface --- CHANGES-4.3.md | 1 + apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src | 8 ++++++-- apps/emqx_auth_jwt/src/emqx_auth_jwt.erl | 5 +++++ apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGES-4.3.md b/CHANGES-4.3.md index 23899cb25..2290147da 100644 --- a/CHANGES-4.3.md +++ b/CHANGES-4.3.md @@ -16,6 +16,7 @@ File format: - Fix that after receiving publish in `idle mode` the emqx-sn gateway may panic. [#9024](https://github.com/emqx/emqx/pull/9024) - "Pause due to rate limit" log level demoted from warning to notice [#9134](https://github.com/emqx/emqx/pull/9134) +- Restore legacy `emqx_auth_jwt` interface to keep hooks working after relup. [##9144](https://github.com/emqx/emqx/pull/9144) ## v4.3.21 diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src index 6f07c4449..bea59cbbb 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src @@ -1,7 +1,9 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.6",[{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, + [{"4.3.6", + [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, {"4.3.5", [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, @@ -13,7 +15,9 @@ {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[0-2]">>,[{restart_application,emqx_auth_jwt}]}, {<<".*">>,[]}], - [{"4.3.6",[{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, + [ {"4.3.6", + [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, {"4.3.5", [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl index 26fd34365..0b3f17b04 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl @@ -23,6 +23,7 @@ -logger_header("[JWT]"). -export([ check_auth/3 + , check/3 , check_acl/5 , description/0 ]). @@ -33,6 +34,10 @@ %% Authentication callbacks %%-------------------------------------------------------------------- +%% for compatibility with old versions +check(ClientInfo, AuthResult, State) -> + ?MODULE:check_auth(ClientInfo, AuthResult, State). + check_auth(ClientInfo, AuthResult, #{from := From, checklists := Checklists}) -> case maps:find(From, ClientInfo) of error -> diff --git a/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl b/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl index a0be3768f..62f753904 100644 --- a/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl +++ b/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl @@ -472,3 +472,19 @@ t_check_jwt_acl_no_exp(_Config) -> emqtt:subscribe(C, <<"a/b">>, 0)), ok = emqtt:disconnect(C). + +t_check_compatibility(init, _Config) -> ok. +t_check_compatibility(_Config) -> + + %% We literary want emqx_auth_jwt:check call emqx_auth_jwt:check_auth, so check with meck + + ok = meck:new(emqx_auth_jwt, [passthrough, no_history]), + ok = meck:expect(emqx_auth_jwt, check_auth, fun(a, b, c) -> ok end), + + ?assertEqual( + ok, + emqx_auth_jwt:check(a, b, c) + ), + + meck:validate(emqx_auth_jwt), + meck:unload(emqx_auth_jwt).