ensure only pickable frontends can be returned
[akkoma] / lib / pleroma / web / plugs / frontend_static.ex
index 62283353ed63311791d965b898773e319e5c3b5e..41b8ba46b90d659a5ba17069f9a8da6eae87076b 100644 (file)
@@ -71,16 +71,23 @@ defmodule Pleroma.Web.Plugs.FrontendStatic do
     Map.get(cookies, @frontend_cookie_name)
   end
 
-  def preferred_or_fallback(conn, fallback) do
+  # Only override primary frontend
+  def preferred_or_fallback(conn, :primary) do
     case preferred_frontend(conn) do
       nil ->
-        fallback
+        :primary
 
       frontend ->
-        frontend
+        if Enum.member?(Pleroma.Config.get([:frontends, :pickable], []), frontend) do
+          frontend
+        else
+          :primary
+        end
     end
   end
 
+  def preferred_or_fallback(_conn, fallback), do: fallback
+
   defp enabled?(if_opt) when is_function(if_opt), do: if_opt.()
   defp enabled?(true), do: true
   defp enabled?(_), do: false
@@ -102,7 +109,6 @@ defmodule Pleroma.Web.Plugs.FrontendStatic do
 
   defp call_static(conn, opts, from) do
     opts = Map.put(opts, :from, from)
-    IO.inspect(opts, label: "opts")
     Plug.Static.call(conn, opts)
   end
 end