Merge branch 'fix/1825-admin-api-error-codes' into 'develop'

Proper error codes for error in adminFE

Closes #1825

See merge request pleroma/pleroma!2665
This commit is contained in:
lain 2020-06-22 12:25:12 +00:00
commit 8b5bdd164e
4 changed files with 50 additions and 43 deletions

View File

@ -488,35 +488,39 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
### Change the user's email, password, display and settings-related fields ### Change the user's email, password, display and settings-related fields
- Params: * Params:
- `email` * `email`
- `password` * `password`
- `name` * `name`
- `bio` * `bio`
- `avatar` * `avatar`
- `locked` * `locked`
- `no_rich_text` * `no_rich_text`
- `default_scope` * `default_scope`
- `banner` * `banner`
- `hide_follows` * `hide_follows`
- `hide_followers` * `hide_followers`
- `hide_followers_count` * `hide_followers_count`
- `hide_follows_count` * `hide_follows_count`
- `hide_favorites` * `hide_favorites`
- `allow_following_move` * `allow_following_move`
- `background` * `background`
- `show_role` * `show_role`
- `skip_thread_containment` * `skip_thread_containment`
- `fields` * `fields`
- `discoverable` * `discoverable`
- `actor_type` * `actor_type`
- Response: * Responses:
Status: 200
```json ```json
{"status": "success"} {"status": "success"}
``` ```
Status: 400
```json ```json
{"errors": {"errors":
{"actor_type": "is invalid"}, {"actor_type": "is invalid"},
@ -525,8 +529,10 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
} }
``` ```
Status: 404
```json ```json
{"error": "Unable to update user."} {"error": "Not found"}
``` ```
## `GET /api/pleroma/admin/reports` ## `GET /api/pleroma/admin/reports`

View File

@ -111,8 +111,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
action: "delete" action: "delete"
}) })
conn json(conn, nicknames)
|> json(nicknames)
end end
def user_follow(%{assigns: %{user: admin}} = conn, %{ def user_follow(%{assigns: %{user: admin}} = conn, %{
@ -131,8 +130,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
}) })
end end
conn json(conn, "ok")
|> json("ok")
end end
def user_unfollow(%{assigns: %{user: admin}} = conn, %{ def user_unfollow(%{assigns: %{user: admin}} = conn, %{
@ -151,8 +149,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
}) })
end end
conn json(conn, "ok")
|> json("ok")
end end
def users_create(%{assigns: %{user: admin}} = conn, %{"users" => users}) do def users_create(%{assigns: %{user: admin}} = conn, %{"users" => users}) do
@ -191,8 +188,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
action: "create" action: "create"
}) })
conn json(conn, res)
|> json(res)
{:error, id, changeset, _} -> {:error, id, changeset, _} ->
res = res =
@ -363,8 +359,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
filters filters
|> String.split(",") |> String.split(",")
|> Enum.filter(&Enum.member?(@filters, &1)) |> Enum.filter(&Enum.member?(@filters, &1))
|> Enum.map(&String.to_atom(&1)) |> Enum.map(&String.to_atom/1)
|> Enum.into(%{}, &{&1, true}) |> Map.new(&{&1, true})
end end
def right_add_multiple(%{assigns: %{user: admin}} = conn, %{ def right_add_multiple(%{assigns: %{user: admin}} = conn, %{
@ -568,10 +564,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
{:error, changeset} -> {:error, changeset} ->
errors = Map.new(changeset.errors, fn {key, {error, _}} -> {key, error} end) errors = Map.new(changeset.errors, fn {key, {error, _}} -> {key, error} end)
json(conn, %{errors: errors}) {:errors, errors}
_ -> _ ->
json(conn, %{error: "Unable to update user."}) {:error, :not_found}
end end
end end
@ -616,7 +612,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
def reload_emoji(conn, _params) do def reload_emoji(conn, _params) do
Pleroma.Emoji.reload() Pleroma.Emoji.reload()
conn |> json("ok") json(conn, "ok")
end end
def confirm_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do def confirm_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do
@ -630,7 +626,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
action: "confirm_email" action: "confirm_email"
}) })
conn |> json("") json(conn, "")
end end
def resend_confirmation_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do def resend_confirmation_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do
@ -644,14 +640,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
action: "resend_confirmation_email" action: "resend_confirmation_email"
}) })
conn |> json("") json(conn, "")
end end
def stats(conn, _) do def stats(conn, _) do
count = Stats.get_status_visibility_count() count = Stats.get_status_visibility_count()
conn json(conn, %{"status_visibility" => count})
|> json(%{"status_visibility" => count})
end end
defp page_params(params) do defp page_params(params) do

View File

@ -17,6 +17,12 @@ defmodule Pleroma.Web.AdminAPI.FallbackController do
|> json(%{error: reason}) |> json(%{error: reason})
end end
def call(conn, {:errors, errors}) do
conn
|> put_status(:bad_request)
|> json(%{errors: errors})
end
def call(conn, {:param_cast, _}) do def call(conn, {:param_cast, _}) do
conn conn
|> put_status(:bad_request) |> put_status(:bad_request)

View File

@ -1599,14 +1599,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
assert patch(conn, "/api/pleroma/admin/users/#{user.nickname}/credentials", %{ assert patch(conn, "/api/pleroma/admin/users/#{user.nickname}/credentials", %{
"actor_type" => "Application" "actor_type" => "Application"
}) })
|> json_response(200) == %{"errors" => %{"actor_type" => "is invalid"}} |> json_response(400) == %{"errors" => %{"actor_type" => "is invalid"}}
end end
test "update non existing user", %{conn: conn} do test "update non existing user", %{conn: conn} do
assert patch(conn, "/api/pleroma/admin/users/non-existing/credentials", %{ assert patch(conn, "/api/pleroma/admin/users/non-existing/credentials", %{
"password" => "new_password" "password" => "new_password"
}) })
|> json_response(200) == %{"error" => "Unable to update user."} |> json_response(404) == %{"error" => "Not found"}
end end
end end