diff options
author | lambda <pleromagit@rogerbraun.net> | 2018-05-25 07:15:01 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2018-05-25 07:15:01 +0000 |
commit | 5d6d86bf00fa533d505ffe5fc3df6c3eadae5739 (patch) | |
tree | 1ba696846331a65a706b78740a0e8a07a0838ab6 /lib | |
parent | caae83e6d54caaac1790a727b902e70adffd296f (diff) | |
parent | 1d88abf2d4834a6dac95c655b9d27cf50377010a (diff) | |
download | pleroma-5d6d86bf00fa533d505ffe5fc3df6c3eadae5739.tar.gz |
Merge branch 'feature/blocks-deny-refollow' into 'develop'
activitypub conformance: deny refollow for blocks
See merge request pleroma/pleroma!170
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user.ex | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 690cc7cf3..508f14584 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -170,25 +170,30 @@ defmodule Pleroma.User do def follow(%User{} = follower, %User{info: info} = followed) do ap_followers = followed.follower_address - if following?(follower, followed) or info["deactivated"] do - {:error, "Could not follow user: #{followed.nickname} is already on your list."} - else - if !followed.local && follower.local && !ap_enabled?(followed) do - Websub.subscribe(follower, followed) - end + cond do + following?(follower, followed) or info["deactivated"] -> + {:error, "Could not follow user: #{followed.nickname} is already on your list."} - following = - [ap_followers | follower.following] - |> Enum.uniq() + blocks?(followed, follower) -> + {:error, "Could not follow user: #{followed.nickname} blocked you."} - follower = - follower - |> follow_changeset(%{following: following}) - |> update_and_set_cache + true -> + if !followed.local && follower.local && !ap_enabled?(followed) do + Websub.subscribe(follower, followed) + end + + following = + [ap_followers | follower.following] + |> Enum.uniq() - {:ok, _} = update_follower_count(followed) + follower = + follower + |> follow_changeset(%{following: following}) + |> update_and_set_cache - follower + {:ok, _} = update_follower_count(followed) + + follower end end |