aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-06-11 21:25:53 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-06-11 21:25:53 +0700
commit6f29865d43f30303bc05bfb10aa28fe3ebef1bfd (patch)
tree8a380181e5d8b49627610b9216da187da276f01a /lib
parent3235923276650ac3a5b8a64c985f118d0f6e309e (diff)
downloadpleroma-6f29865d43f30303bc05bfb10aa28fe3ebef1bfd.tar.gz
Add option to restrict all users to local content
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/activity/search.ex17
-rw-r--r--lib/pleroma/user/search.ex41
2 files changed, 29 insertions, 29 deletions
diff --git a/lib/pleroma/activity/search.ex b/lib/pleroma/activity/search.ex
index 9ccedcd13..8cbb64cc4 100644
--- a/lib/pleroma/activity/search.ex
+++ b/lib/pleroma/activity/search.ex
@@ -56,18 +56,19 @@ defmodule Pleroma.Activity.Search do
)
end
- # users can search everything
- defp maybe_restrict_local(q, %User{}), do: q
+ defp maybe_restrict_local(q, user) do
+ limit = Pleroma.Config.get([:instance, :limit_to_local_content], :unauthenticated)
- # unauthenticated users can only search local activities
- defp maybe_restrict_local(q, _) do
- if Pleroma.Config.get([:instance, :limit_unauthenticated_to_local_content], true) do
- where(q, local: true)
- else
- q
+ case {limit, user} do
+ {:all, _} -> restrict_local(q)
+ {:unauthenticated, %User{}} -> q
+ {:unauthenticated, _} -> restrict_local(q)
+ {false, _} -> q
end
end
+ defp restrict_local(q), do: where(q, local: true)
+
defp maybe_fetch(activities, user, search_query) do
with true <- Regex.match?(~r/https?:/, search_query),
{:ok, object} <- Fetcher.fetch_object_from_id(search_query),
diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex
index add6a0bbf..f88dffa7b 100644
--- a/lib/pleroma/user/search.ex
+++ b/lib/pleroma/user/search.ex
@@ -28,16 +28,6 @@ defmodule Pleroma.User.Search do
results
end
- defp maybe_resolve(true, %User{}, query) do
- User.get_or_fetch(query)
- end
-
- defp maybe_resolve(true, _, query) do
- unless restrict_local?(), do: User.get_or_fetch(query)
- end
-
- defp maybe_resolve(_, _, _), do: :noop
-
defp search_query(query, for_user) do
query
|> union_query()
@@ -49,10 +39,6 @@ defmodule Pleroma.User.Search do
|> maybe_restrict_local(for_user)
end
- defp restrict_local? do
- Pleroma.Config.get([:instance, :limit_unauthenticated_to_local_content], true)
- end
-
defp union_query(query) do
fts_subquery = fts_search_subquery(query)
trigram_subquery = trigram_search_subquery(query)
@@ -64,17 +50,30 @@ defmodule Pleroma.User.Search do
from(s in subquery(q), order_by: s.search_type, distinct: s.id)
end
- # unauthenticated users can only search local activities
- defp maybe_restrict_local(q, %User{}), do: q
+ defp maybe_resolve(true, user, query) do
+ case {limit(), user} do
+ {:all, _} -> :noop
+ {:unauthenticated, %User{}} -> User.get_or_fetch(query)
+ {:unauthenticated, _} -> :noop
+ {false, _} -> User.get_or_fetch(query)
+ end
+ end
- defp maybe_restrict_local(q, _) do
- if restrict_local?() do
- where(q, [u], u.local == true)
- else
- q
+ defp maybe_resolve(_, _, _), do: :noop
+
+ defp maybe_restrict_local(q, user) do
+ case {limit(), user} do
+ {:all, _} -> restrict_local(q)
+ {:unauthenticated, %User{}} -> q
+ {:unauthenticated, _} -> restrict_local(q)
+ {false, _} -> q
end
end
+ defp limit, do: Pleroma.Config.get([:instance, :limit_to_local_content], :unauthenticated)
+
+ defp restrict_local(q), do: where(q, [u], u.local == true)
+
defp boost_search_rank_query(query, nil), do: query
defp boost_search_rank_query(query, for_user) do