import Plug.Conn
import Pleroma.Web.Gettext
+ alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug
+
@behaviour Plug
def init(%{scopes: _} = options), do: options
cond do
is_nil(token) ->
- conn
+ maybe_perform_instance_privacy_check(conn, options)
op == :| && Enum.any?(matched_scopes) ->
conn
conn
|> assign(:user, nil)
|> assign(:token, nil)
+ |> maybe_perform_instance_privacy_check(options)
true ->
missing_scopes = scopes -- matched_scopes
end
)
end
+
+ defp maybe_perform_instance_privacy_check(%Plug.Conn{} = conn, options) do
+ if options[:skip_instance_privacy_check] do
+ conn
+ else
+ EnsurePublicOrAuthenticatedPlug.call(conn, [])
+ end
+ end
end