logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

ensure_staff_privileged_plug.ex (887B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.Plugs.EnsureStaffPrivilegedPlug do
  5. @moduledoc """
  6. Ensures staff are privileged enough to do certain tasks.
  7. """
  8. import Pleroma.Web.TranslationHelpers
  9. import Plug.Conn
  10. alias Pleroma.Config
  11. alias Pleroma.User
  12. def init(options) do
  13. options
  14. end
  15. def call(%{assigns: %{user: %User{is_admin: true}}} = conn, _), do: conn
  16. def call(%{assigns: %{user: %User{is_moderator: true}}} = conn, _) do
  17. if Config.get!([:instance, :privileged_staff]) do
  18. conn
  19. else
  20. conn
  21. |> render_error(:forbidden, "User is not an admin.")
  22. |> halt()
  23. end
  24. end
  25. def call(conn, _) do
  26. conn
  27. |> render_error(:forbidden, "User is not a staff member.")
  28. |> halt()
  29. end
  30. end