webhook fixes

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk 2026-02-27 23:11:37 +01:00
commit 8eca6ca87c
3 changed files with 18 additions and 20 deletions

View file

@ -40,17 +40,18 @@ defmodule Pleroma.Web.AdminAPI.WebhookController do
end end
def create(%{body_params: params} = conn, _) do def create(%{body_params: params} = conn, _) do
with webhook <- Webhook.create(params) do with {:ok, webhook} <- Webhook.create(params) do
render(conn, "show.json", webhook: webhook) render(conn, "show.json", webhook: webhook)
end end
end end
def update(%{body_params: params} = conn, %{id: id}) do def update(%{body_params: params} = conn, %{id: id}) do
with %Webhook{internal: false} = webhook <- Webhook.get(id), with %Webhook{internal: false} = webhook <- Webhook.get(id),
webhook <- Webhook.update(webhook, params) do {:ok, webhook} <- Webhook.update(webhook, params) do
render(conn, "show.json", webhook: webhook) render(conn, "show.json", webhook: webhook)
else else
%Webhook{internal: true} -> {:error, :forbidden} %Webhook{internal: true} -> {:error, :forbidden}
nil -> {:error, :not_found}
end end
end end
@ -60,6 +61,7 @@ defmodule Pleroma.Web.AdminAPI.WebhookController do
render(conn, "show.json", webhook: webhook) render(conn, "show.json", webhook: webhook)
else else
%Webhook{internal: true} -> {:error, :forbidden} %Webhook{internal: true} -> {:error, :forbidden}
nil -> {:error, :not_found}
end end
end end

View file

@ -27,7 +27,7 @@ defmodule Pleroma.Web.MastodonAPI.Admin.AccountView do
role: role(user), role: role(user),
confirmed: user.is_confirmed, confirmed: user.is_confirmed,
sensitized: nil, sensitized: nil,
suspened: nil, suspended: nil,
silenced: nil, silenced: nil,
disabled: !user.is_active, disabled: !user.is_active,
approved: user.is_approved, approved: user.is_approved,

View file

@ -28,6 +28,7 @@ defmodule Pleroma.Webhook do
def get_by_type(type) do def get_by_type(type) do
__MODULE__ __MODULE__
|> where([w], ^type in w.events) |> where([w], ^type in w.events)
|> where([w], w.enabled == true)
|> Repo.all() |> Repo.all()
end end
@ -48,21 +49,15 @@ defmodule Pleroma.Webhook do
end end
def create(params) do def create(params) do
{:ok, webhook} = %__MODULE__{}
%__MODULE__{} |> changeset(params)
|> changeset(params) |> Repo.insert()
|> Repo.insert()
webhook
end end
def update(%__MODULE__{} = webhook, params) do def update(%__MODULE__{} = webhook, params) do
{:ok, webhook} =
webhook
|> update_changeset(params)
|> Repo.update()
webhook webhook
|> update_changeset(params)
|> Repo.update()
end end
def delete(webhook), do: webhook |> Repo.delete() def delete(webhook), do: webhook |> Repo.delete()
@ -80,12 +75,13 @@ defmodule Pleroma.Webhook do
|> Repo.update() |> Repo.update()
end end
defp strip_events(params) do defp strip_events(changeset) do
if Map.has_key?(params, :events) do case get_change(changeset, :events) do
params nil ->
|> Map.put(:events, Enum.filter(params[:events], &Enum.member?(@event_types, &1))) changeset
else
params events ->
put_change(changeset, :events, Enum.filter(events, &(&1 in @event_types)))
end end
end end