Browse Source

Add user show endpoint for Pleroma admin API

tags/v1.1.4
eugenijm 5 years ago
parent
commit
10c81fc902
4 changed files with 62 additions and 0 deletions
  1. +11
    -0
      docs/Admin-API.md
  2. +15
    -0
      lib/pleroma/web/admin_api/admin_api_controller.ex
  3. +1
    -0
      lib/pleroma/web/router.ex
  4. +35
    -0
      test/web/admin_api/admin_api_controller_test.exs

+ 11
- 0
docs/Admin-API.md View File

@@ -149,6 +149,17 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
- `nickname`
- `status` BOOLEAN field, false value means deactivation.

## `/api/pleroma/admin/users/:nickname`

### Retrive the details of a user

- Method: `GET`
- Params:
- `nickname`
- Response:
- On failure: `Not found`
- On success: JSON of the user

## `/api/pleroma/admin/relay`

### Follow a Relay


+ 15
- 0
lib/pleroma/web/admin_api/admin_api_controller.ex View File

@@ -45,6 +45,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|> json(user.nickname)
end

def user_show(conn, %{"nickname" => nickname}) do
with %User{} = user <- User.get_by_nickname(nickname) do
conn
|> json(AccountView.render("show.json", %{user: user}))
else
_ -> {:error, :not_found}
end
end

def user_toggle_activation(conn, %{"nickname" => nickname}) do
user = User.get_by_nickname(nickname)

@@ -231,6 +240,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|> json(token.token)
end

def errors(conn, {:error, :not_found}) do
conn
|> put_status(404)
|> json("Not found")
end

def errors(conn, {:param_cast, _}) do
conn
|> put_status(400)


+ 1
- 0
lib/pleroma/web/router.ex View File

@@ -140,6 +140,7 @@ defmodule Pleroma.Web.Router do
pipe_through([:admin_api, :oauth_write])

get("/users", AdminAPIController, :list_users)
get("/users/:nickname", AdminAPIController, :user_show)
delete("/user", AdminAPIController, :user_delete)
patch("/users/:nickname/toggle_activation", AdminAPIController, :user_toggle_activation)
post("/user", AdminAPIController, :user_create)


+ 35
- 0
test/web/admin_api/admin_api_controller_test.exs View File

@@ -40,6 +40,41 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
end

describe "/api/pleroma/admin/users/:nickname" do
test "Show", %{conn: conn} do
admin = insert(:user, info: %{is_admin: true})
user = insert(:user)

conn =
conn
|> assign(:user, admin)
|> get("/api/pleroma/admin/users/#{user.nickname}")

expected = %{
"deactivated" => false,
"id" => to_string(user.id),
"local" => true,
"nickname" => user.nickname,
"roles" => %{"admin" => false, "moderator" => false},
"tags" => []
}

assert expected == json_response(conn, 200)
end

test "when the user doesn't exist", %{conn: conn} do
admin = insert(:user, info: %{is_admin: true})
user = build(:user)

conn =
conn
|> assign(:user, admin)
|> get("/api/pleroma/admin/users/#{user.nickname}")

assert "Not found" == json_response(conn, 404)
end
end

describe "PUT /api/pleroma/admin/users/tag" do
setup do
admin = insert(:user, info: %{is_admin: true})


Loading…
Cancel
Save