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
|
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
|
def deactivate(%User{} = user) do
|
||||||
new_info = Map.put(user.info, "deactivated", true)
|
new_info = Map.put(user.info, "deactivated", true)
|
||||||
cs = User.info_changeset(user, %{info: new_info})
|
cs = User.info_changeset(user, %{info: new_info})
|
||||||
|
|
|
@ -3,6 +3,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
|
||||||
|
|
||||||
alias Pleroma.Stats
|
alias Pleroma.Stats
|
||||||
alias Pleroma.Web
|
alias Pleroma.Web
|
||||||
|
alias Pleroma.{User, Repo}
|
||||||
|
|
||||||
def schemas(conn, _params) do
|
def schemas(conn, _params) do
|
||||||
response = %{
|
response = %{
|
||||||
|
@ -26,6 +27,11 @@ def nodeinfo(conn, %{"version" => "2.0"}) do
|
||||||
gopher = Application.get_env(:pleroma, :gopher)
|
gopher = Application.get_env(:pleroma, :gopher)
|
||||||
stats = Stats.get_stats()
|
stats = Stats.get_stats()
|
||||||
|
|
||||||
|
staff_accounts =
|
||||||
|
User.moderator_user_query()
|
||||||
|
|> Repo.all()
|
||||||
|
|> Enum.map(fn u -> u.ap_id end)
|
||||||
|
|
||||||
response = %{
|
response = %{
|
||||||
version: "2.0",
|
version: "2.0",
|
||||||
software: %{
|
software: %{
|
||||||
|
@ -55,6 +61,7 @@ def nodeinfo(conn, %{"version" => "2.0"}) do
|
||||||
timeout: Keyword.get(suggestions, :timeout, 5000),
|
timeout: Keyword.get(suggestions, :timeout, 5000),
|
||||||
web: Keyword.get(suggestions, :web, "")
|
web: Keyword.get(suggestions, :web, "")
|
||||||
},
|
},
|
||||||
|
staffAccounts: staff_accounts,
|
||||||
chat: Keyword.get(chat, :enabled),
|
chat: Keyword.get(chat, :enabled),
|
||||||
gopher: Keyword.get(gopher, :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