diff --git a/apps/emqx_authz/include/emqx_authz.hrl b/apps/emqx_authz/include/emqx_authz.hrl index 371d56e30..4e0baa8fd 100644 --- a/apps/emqx_authz/include/emqx_authz.hrl +++ b/apps/emqx_authz/include/emqx_authz.hrl @@ -68,6 +68,8 @@ -define(CONF_KEY_PATH, [authorization, sources]). +-define(RE_PLACEHOLDER, "\\$\\{[a-z0-9\\-]+\\}"). + -define(USERNAME_RULES_EXAMPLE, #{username => user1, rules => [ #{topic => <<"test/toopic/1">>, permission => <<"allow">>, diff --git a/apps/emqx_authz/src/emqx_authz_mysql.erl b/apps/emqx_authz/src/emqx_authz_mysql.erl index 6821f15c3..a3a5e1ed9 100644 --- a/apps/emqx_authz/src/emqx_authz_mysql.erl +++ b/apps/emqx_authz/src/emqx_authz_mysql.erl @@ -38,10 +38,10 @@ description() -> parse_query(undefined) -> undefined; parse_query(Sql) -> - case re:run(Sql, "'%[ucCad]'", [global, {capture, all, list}]) of + case re:run(Sql, ?RE_PLACEHOLDER, [global, {capture, all, list}]) of {match, Variables} -> Params = [Var || [Var] <- Variables], - {re:replace(Sql, "'%[ucCad]'", "?", [global, {return, list}]), Params}; + {re:replace(Sql, ?RE_PLACEHOLDER, "?", [global, {return, list}]), Params}; nomatch -> {Sql, []} end. diff --git a/apps/emqx_authz/src/emqx_authz_postgresql.erl b/apps/emqx_authz/src/emqx_authz_postgresql.erl index d88b35b41..5bae5f674 100644 --- a/apps/emqx_authz/src/emqx_authz_postgresql.erl +++ b/apps/emqx_authz/src/emqx_authz_postgresql.erl @@ -38,7 +38,7 @@ description() -> parse_query(undefined) -> undefined; parse_query(Sql) -> - case re:run(Sql, "'%[ucCad]'", [global, {capture, all, list}]) of + case re:run(Sql, ?RE_PLACEHOLDER, [global, {capture, all, list}]) of {match, Variables} -> Params = [Var || [Var] <- Variables], Vars = ["$" ++ integer_to_list(I) || I <- lists:seq(1, length(Params))],