fix(authn): fix bad parsing for postgresql SQL
This commit is contained in:
parent
29fb9b3361
commit
ca4bb100ec
|
@ -36,6 +36,11 @@
|
|||
, destroy/1
|
||||
]).
|
||||
|
||||
-ifdef(TEST).
|
||||
-compile(export_all).
|
||||
-compile(nowarn_export_all).
|
||||
-endif.
|
||||
|
||||
%%------------------------------------------------------------------------------
|
||||
%% Hocon Schema
|
||||
%%------------------------------------------------------------------------------
|
||||
|
@ -48,7 +53,7 @@ fields(config) ->
|
|||
[ {mechanism, {enum, ['password-based']}}
|
||||
, {backend, {enum, [postgresql]}}
|
||||
, {password_hash_algorithm, fun password_hash_algorithm/1}
|
||||
, {salt_position, {enum, [prefix, suffix]}}
|
||||
, {salt_position, fun salt_position/1}
|
||||
, {query, fun query/1}
|
||||
] ++ emqx_authn_schema:common_fields()
|
||||
++ emqx_connector_schema_lib:relational_db_fields()
|
||||
|
@ -58,6 +63,10 @@ password_hash_algorithm(type) -> {enum, [plain, md5, sha, sha256, sha512, bcrypt
|
|||
password_hash_algorithm(default) -> sha256;
|
||||
password_hash_algorithm(_) -> undefined.
|
||||
|
||||
salt_position(type) -> {enum, [prefix, suffix]};
|
||||
salt_position(default) -> prefix;
|
||||
salt_position(_) -> undefined.
|
||||
|
||||
query(type) -> string();
|
||||
query(_) -> undefined.
|
||||
|
||||
|
@ -134,10 +143,10 @@ destroy(#{'_unique' := Unique}) ->
|
|||
parse_query(Query) ->
|
||||
case re:run(Query, ?RE_PLACEHOLDER, [global, {capture, all, binary}]) of
|
||||
{match, Captured} ->
|
||||
PlaceHolders = ["\\" ++ PlaceHolder || [PlaceHolder] <- Captured],
|
||||
PlaceHolders = [PlaceHolder || [PlaceHolder] <- Captured],
|
||||
Replacements = ["$" ++ integer_to_list(I) || I <- lists:seq(1, length(Captured))],
|
||||
NQuery = lists:foldl(fun({PlaceHolder, Replacement}, Query0) ->
|
||||
re:replace(Query0, PlaceHolder, Replacement, [{return, binary}])
|
||||
re:replace(Query0, "\\" ++ PlaceHolder, Replacement, [{return, binary}])
|
||||
end, Query, lists:zip(PlaceHolders, Replacements)),
|
||||
{NQuery, PlaceHolders};
|
||||
nomatch ->
|
||||
|
|
Loading…
Reference in New Issue