logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

ensure_public_or_authenticated_plug.ex (746B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug do
  5. import Pleroma.Web.TranslationHelpers
  6. import Plug.Conn
  7. alias Pleroma.Config
  8. alias Pleroma.User
  9. use Pleroma.Web, :plug
  10. def init(options) do
  11. options
  12. end
  13. @impl true
  14. def perform(conn, _) do
  15. public? = Config.get!([:instance, :public])
  16. case {public?, conn} do
  17. {true, _} ->
  18. conn
  19. {false, %{assigns: %{user: %User{}}}} ->
  20. conn
  21. {false, _} ->
  22. conn
  23. |> render_error(:forbidden, "This resource requires authentication.")
  24. |> halt
  25. end
  26. end
  27. end