Commit 8143251f authored by kaniini's avatar kaniini

Merge branch 'feature/staff-discovery-api' into 'develop'

staff discovery api

See merge request pleroma/pleroma!326
parents 1c9e539b 76c67a41
......@@ -609,6 +609,14 @@ defmodule Pleroma.User do
)
end
def moderator_user_query() do
from(
u in User,
where: u.local == true,
where: fragment("?->'is_moderator' @> 'true'", u.info)
)
end
def deactivate(%User{} = user) do
new_info = Map.put(user.info, "deactivated", true)
cs = User.info_changeset(user, %{info: new_info})
......
......@@ -3,6 +3,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
alias Pleroma.Stats
alias Pleroma.Web
alias Pleroma.{User, Repo}
def schemas(conn, _params) do
response = %{
......@@ -26,6 +27,11 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
gopher = Application.get_env(:pleroma, :gopher)
stats = Stats.get_stats()
staff_accounts =
User.moderator_user_query()
|> Repo.all()
|> Enum.map(fn u -> u.ap_id end)
response = %{
version: "2.0",
software: %{
......@@ -55,6 +61,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
timeout: Keyword.get(suggestions, :timeout, 5000),
web: Keyword.get(suggestions, :web, "")
},
staffAccounts: staff_accounts,
chat: Keyword.get(chat, :enabled),
gopher: Keyword.get(gopher, :enabled)
}
......
defmodule Pleroma.Repo.Migrations.UsersAddIsModeratorIndex do
use Ecto.Migration
def change do
create index(:users, ["(info->'is_moderator')"], name: :users_is_moderator_index, using: :gin)
end
end
defmodule Pleroma.Web.NodeInfoTest do
use Pleroma.Web.ConnCase
import Pleroma.Factory
test "nodeinfo shows staff accounts", %{conn: conn} do
user = insert(:user, %{local: true, info: %{"is_moderator" => true}})
conn =
conn
|> get("/nodeinfo/2.0.json")
assert result = json_response(conn, 200)
assert user.ap_id in result["metadata"]["staffAccounts"]
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment