[#394] Added users.tags and admin routes to tag and untag users. Added tests.

This commit is contained in:
Ivan Tashkinov 2018-12-06 20:06:50 +03:00
commit 7b19487389
8 changed files with 139 additions and 2 deletions

View file

@ -3,6 +3,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
alias Pleroma.{User, Repo}
alias Pleroma.Web.ActivityPub.Relay
import Pleroma.Web.ControllerHelper, only: [json_response: 3]
require Logger
action_fallback(:errors)
@ -40,6 +42,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|> json(new_user.nickname)
end
def tag_users(conn, %{"nicknames" => nicknames, "tags" => tags}) do
with {:ok, _} <- User.tag(nicknames, tags),
do: json_response(conn, :no_content, "")
end
def untag_users(conn, %{"nicknames" => nicknames, "tags" => tags}) do
with {:ok, _} <- User.untag(nicknames, tags),
do: json_response(conn, :no_content, "")
end
def right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname})
when permission_group in ["moderator", "admin"] do
user = User.get_by_nickname(nickname)

View file

@ -0,0 +1,9 @@
defmodule Pleroma.Web.ControllerHelper do
use Pleroma.Web, :controller
def json_response(conn, status, json) do
conn
|> put_status(status)
|> json(json)
end
end

View file

@ -58,7 +58,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
note: "",
privacy: user_info.default_scope,
sensitive: false
}
},
# Note: Mastodon does not return this field:
tags: user.tags
}
end

View file

@ -98,6 +98,8 @@ defmodule Pleroma.Web.Router do
pipe_through(:admin_api)
delete("/user", AdminAPIController, :user_delete)
post("/user", AdminAPIController, :user_create)
put("/users/tag", AdminAPIController, :tag_users)
put("/users/untag", AdminAPIController, :untag_users)
get("/permission_group/:nickname", AdminAPIController, :right_get)
get("/permission_group/:nickname/:permission_group", AdminAPIController, :right_get)

View file

@ -77,7 +77,9 @@ defmodule Pleroma.Web.TwitterAPI.UserView do
"locked" => user.info.locked,
"default_scope" => user.info.default_scope,
"no_rich_text" => user.info.no_rich_text,
"fields" => fields
"fields" => fields,
# Note: twitter.com does not return this field:
"tags" => user.tags
}
if assigns[:token] do