forked from AkkomaGang/akkoma
Merge branch 'feature/staff-discovery-api' into 'develop'
staff discovery api See merge request pleroma/pleroma!326
This commit is contained in:
commit
8143251f06
4 changed files with 39 additions and 0 deletions
|
@ -609,6 +609,14 @@ def local_user_query() 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 @@ def nodeinfo(conn, %{"version" => "2.0"}) 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 @@ def nodeinfo(conn, %{"version" => "2.0"}) 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)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
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
|
17
test/web/node_info_test.exs
Normal file
17
test/web/node_info_test.exs
Normal file
|
@ -0,0 +1,17 @@
|
|||
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
|
Loading…
Reference in a new issue