Procházet zdrojové kódy

feat(emqx_dashboard_swagger): apply field validator in request body check

Serge Tupchii před 1 rokem
rodič
revize
159da912c2

+ 8 - 1
apps/emqx_dashboard/src/emqx_dashboard_swagger.erl

@@ -575,7 +575,14 @@ check_request_body(#{body := Body}, Schema, Module, CheckFun, true) ->
                     ?REF(StructName) -> ?R_REF(Module, StructName);
                     _ -> Type0
                 end,
-            NewSchema = ?INIT_SCHEMA#{roots => [{root, Type}]},
+            Validations =
+                case hocon_schema:field_schema(Schema, validator) of
+                    undefined ->
+                        [];
+                    Fun when is_function(Fun) ->
+                        [{validator, fun(#{<<"root">> := B}) -> Fun(B) end}]
+                end,
+            NewSchema = ?INIT_SCHEMA#{roots => [{root, Type}], validations => Validations},
             Option = #{required => false},
             #{<<"root">> := NewBody} = CheckFun(NewSchema, #{<<"root">> => Body}, Option),
             {ok, NewBody};