|
@@ -91,16 +91,17 @@ fields(app) ->
|
|
|
"""They are useful for accessing public data anonymously,"""
|
|
"""They are useful for accessing public data anonymously,"""
|
|
|
"""and are used to associate API requests.""",
|
|
"""and are used to associate API requests.""",
|
|
|
example => <<"MzAyMjk3ODMwMDk0NjIzOTUxNjcwNzQ0NzQ3MTE2NDYyMDI">>})},
|
|
example => <<"MzAyMjk3ODMwMDk0NjIzOTUxNjcwNzQ0NzQ3MTE2NDYyMDI">>})},
|
|
|
- {expired_at, hoconsc:mk(emqx_schema:rfc3339_system_time(),
|
|
|
|
|
|
|
+ {expired_at, hoconsc:mk(hoconsc:union([undefined, emqx_schema:rfc3339_system_time()]),
|
|
|
#{desc => "No longer valid datetime",
|
|
#{desc => "No longer valid datetime",
|
|
|
example => <<"2021-12-05T02:01:34.186Z">>,
|
|
example => <<"2021-12-05T02:01:34.186Z">>,
|
|
|
- nullable => true
|
|
|
|
|
|
|
+ nullable => true,
|
|
|
|
|
+ default => undefined
|
|
|
})},
|
|
})},
|
|
|
{created_at, hoconsc:mk(emqx_schema:rfc3339_system_time(),
|
|
{created_at, hoconsc:mk(emqx_schema:rfc3339_system_time(),
|
|
|
#{desc => "ApiKey create datetime",
|
|
#{desc => "ApiKey create datetime",
|
|
|
example => <<"2021-12-01T00:00:00.000Z">>
|
|
example => <<"2021-12-01T00:00:00.000Z">>
|
|
|
})},
|
|
})},
|
|
|
- {desc, hoconsc:mk(emqx_schema:unicode_binary(),
|
|
|
|
|
|
|
+ {desc, hoconsc:mk(binary(),
|
|
|
#{example => <<"Note">>, nullable => true})},
|
|
#{example => <<"Note">>, nullable => true})},
|
|
|
{enable, hoconsc:mk(boolean(), #{desc => "Enable/Disable", nullable => true})}
|
|
{enable, hoconsc:mk(boolean(), #{desc => "Enable/Disable", nullable => true})}
|
|
|
];
|
|
];
|
|
@@ -136,9 +137,15 @@ api_key(post, #{body := App}) ->
|
|
|
#{
|
|
#{
|
|
|
<<"name">> := Name,
|
|
<<"name">> := Name,
|
|
|
<<"desc">> := Desc0,
|
|
<<"desc">> := Desc0,
|
|
|
- <<"expired_at">> := ExpiredAt,
|
|
|
|
|
<<"enable">> := Enable
|
|
<<"enable">> := Enable
|
|
|
} = App,
|
|
} = App,
|
|
|
|
|
+ %% undefined is never expired
|
|
|
|
|
+ ExpiredAt0 = maps:get(<<"expired_at">>, App, <<"undefined">>),
|
|
|
|
|
+ ExpiredAt =
|
|
|
|
|
+ case ExpiredAt0 of
|
|
|
|
|
+ <<"undefined">> -> undefined;
|
|
|
|
|
+ _ -> ExpiredAt0
|
|
|
|
|
+ end,
|
|
|
Desc = unicode:characters_to_binary(Desc0, unicode),
|
|
Desc = unicode:characters_to_binary(Desc0, unicode),
|
|
|
case emqx_mgmt_auth:create(Name, Enable, ExpiredAt, Desc) of
|
|
case emqx_mgmt_auth:create(Name, Enable, ExpiredAt, Desc) of
|
|
|
{ok, NewApp} -> {200, format(NewApp)};
|
|
{ok, NewApp} -> {200, format(NewApp)};
|
|
@@ -164,8 +171,13 @@ api_key_by_name(put, #{bindings := #{name := Name}, body := Body}) ->
|
|
|
{error, not_found} -> {404, <<"NOT_FOUND">>}
|
|
{error, not_found} -> {404, <<"NOT_FOUND">>}
|
|
|
end.
|
|
end.
|
|
|
|
|
|
|
|
-format(App = #{expired_at := ExpiredAt, created_at := CreateAt}) ->
|
|
|
|
|
|
|
+format(App = #{expired_at := ExpiredAt0, created_at := CreateAt}) ->
|
|
|
|
|
+ ExpiredAt =
|
|
|
|
|
+ case ExpiredAt0 of
|
|
|
|
|
+ undefined -> <<"undefined">>;
|
|
|
|
|
+ _ -> list_to_binary(calendar:system_time_to_rfc3339(ExpiredAt0))
|
|
|
|
|
+ end,
|
|
|
App#{
|
|
App#{
|
|
|
- expired_at => list_to_binary(calendar:system_time_to_rfc3339(ExpiredAt)),
|
|
|
|
|
|
|
+ expired_at => ExpiredAt,
|
|
|
created_at => list_to_binary(calendar:system_time_to_rfc3339(CreateAt))
|
|
created_at => list_to_binary(calendar:system_time_to_rfc3339(CreateAt))
|
|
|
}.
|
|
}.
|