Kaynağa Gözat

fix(auth mnesia api): fix write file error

zhanghongtong 4 yıl önce
ebeveyn
işleme
718dd80b48

+ 8 - 8
apps/emqx_authz/src/emqx_authz_api_sources.erl

@@ -298,15 +298,15 @@ move_source_api() ->
     {"/authorization/sources/:type/move", Metadata, move_source}.
 
 sources(get, _) ->
-    Sources = lists:foldl(fun (#{enable := false} = Source, AccIn) ->
-                                  lists:append(AccIn, [Source#{annotations => #{status => unhealthy}}]);
-                              (#{type := file, path := Path}, AccIn) ->
+    Sources = lists:foldl(fun (#{type := file, enable := Enable, path := Path}, AccIn) ->
                                   {ok, Rules} = file:consult(Path),
                                   lists:append(AccIn, [#{type => file,
-                                                         enable => true,
+                                                         enable => Enable,
                                                          rules => [ iolist_to_binary(io_lib:format("~p.", [R])) || R <- Rules],
                                                          annotations => #{status => healthy}
                                                         }]);
+                              (#{enable := false} = Source, AccIn) ->
+                                  lists:append(AccIn, [Source#{annotations => #{status => unhealthy}}]);
                               (#{type := _Type, annotations := #{id := Id}} = Source, AccIn) ->
                                   NSource0 = case maps:get(server, Source, undefined) of
                                                  undefined -> Source;
@@ -367,15 +367,15 @@ sources(put, #{body := Body}) when is_list(Body) ->
 source(get, #{bindings := #{type := Type}}) ->
     case emqx_authz:lookup(Type) of
         {error, Reason} -> {404, #{messgae => atom_to_binary(Reason)}};
-        #{enable := false} = Source -> {200, Source#{annotations => #{status => unhealthy}}};
-        #{type := file, path := Path}->
+        #{type := file, enable := Enable, path := Path}->
             {ok, Rules} = file:consult(Path),
             {200, #{type => file,
-                    enable => true,
+                    enable => Enable,
                     rules => [ iolist_to_binary(io_lib:format("~p.", [R])) || R <- Rules],
                     annotations => #{status => healthy}
                    }
             };
+        #{enable := false} = Source -> {200, Source#{annotations => #{status => unhealthy}}};
         #{annotations := #{id := Id}} = Source ->
             NSource0 = case maps:get(server, Source, undefined) of
                            undefined -> Source;
@@ -486,7 +486,7 @@ write_cert(Source) -> Source.
 write_file(Filename, Bytes) ->
     ok = filelib:ensure_dir(Filename),
     case file:write_file(Filename, Bytes) of
-       ok -> {ok, Filename};
+       ok -> {ok, iolist_to_binary(Filename)};
        {error, Reason} ->
            ?LOG(error, "Write File ~p Error: ~p", [Filename, Reason]),
            error(Reason)