diff options
author | lambda <pleromagit@rogerbraun.net> | 2018-06-11 11:19:45 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2018-06-11 11:19:45 +0000 |
commit | 7f79b467b1b56ce9ac7f544aaa2b687dcae341c5 (patch) | |
tree | 5c2b067d132fda185016982e1a8a1445eff0ce7d /lib/pleroma/user.ex | |
parent | 45a935f0bd86501d64be7f453c08a47e46565ef9 (diff) | |
parent | 29c9c8d93b263e57915158d09761bc6586826798 (diff) | |
download | pleroma-7f79b467b1b56ce9ac7f544aaa2b687dcae341c5.tar.gz |
Merge branch 'feature/domain-blocks' into 'develop'
Domain blocks
See merge request pleroma/pleroma!190
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 828370cab..00cac153d 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -479,7 +479,31 @@ defmodule Pleroma.User do def blocks?(user, %{ap_id: ap_id}) do blocks = user.info["blocks"] || [] - Enum.member?(blocks, ap_id) + domain_blocks = user.info["domain_blocks"] || [] + %{host: host} = URI.parse(ap_id) + + Enum.member?(blocks, ap_id) || + Enum.any?(domain_blocks, fn domain -> + host == domain + end) + end + + def block_domain(user, domain) do + domain_blocks = user.info["domain_blocks"] || [] + new_blocks = Enum.uniq([domain | domain_blocks]) + new_info = Map.put(user.info, "domain_blocks", new_blocks) + + cs = User.info_changeset(user, %{info: new_info}) + update_and_set_cache(cs) + end + + def unblock_domain(user, domain) do + blocks = user.info["domain_blocks"] || [] + new_blocks = List.delete(blocks, domain) + new_info = Map.put(user.info, "domain_blocks", new_blocks) + + cs = User.info_changeset(user, %{info: new_info}) + update_and_set_cache(cs) end def local_user_query() do |