diff options
author | rinpatch <rinpatch@sdf.org> | 2019-07-31 22:05:12 +0300 |
---|---|---|
committer | Ariadne Conill <ariadne@dereferenced.org> | 2019-07-31 20:08:59 +0000 |
commit | 2c2c075fd6839f540cc521def52206bf560dc148 (patch) | |
tree | 4beb273b8804e8182213229f0b89a884b5439690 | |
parent | 59e60c6db1f5fb7fd6def68a22e9ece1714e4fae (diff) | |
download | pleroma-2c2c075fd6839f540cc521def52206bf560dc148.tar.gz |
Disallow following locked accounts over OStatus
-rw-r--r-- | lib/pleroma/web/ostatus/handlers/follow_handler.ex | 4 | ||||
-rw-r--r-- | test/web/ostatus/ostatus_test.exs | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/web/ostatus/handlers/follow_handler.ex b/lib/pleroma/web/ostatus/handlers/follow_handler.ex index 03e4cbbb0..24513972e 100644 --- a/lib/pleroma/web/ostatus/handlers/follow_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/follow_handler.ex @@ -14,9 +14,13 @@ defmodule Pleroma.Web.OStatus.FollowHandler do followed_uri when not is_nil(followed_uri) <- XML.string_from_xpath("/entry/activity:object/id", entry), {:ok, followed} <- OStatus.find_or_make_user(followed_uri), + {:locked, false} <- {:locked, followed.info.locked}, {:ok, activity} <- ActivityPub.follow(actor, followed, id, false) do User.follow(actor, followed) {:ok, activity} + else + {:locked, true} -> + {:error, "It's not possible to follow locked accounts over OStatus"} end end end diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index a74d13d02..77bccdaa1 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -302,6 +302,14 @@ defmodule Pleroma.Web.OStatusTest do assert User.following?(follower, followed) end + test "refuse following over OStatus if the followed's account is locked" do + incoming = File.read!("test/fixtures/follow.xml") + _user = insert(:user, info: %{locked: true}, ap_id: "https://pawoo.net/users/pekorino") + + {:ok, [{:error, "It's not possible to follow locked accounts over OStatus"}]} = + OStatus.handle_incoming(incoming) + end + test "handle incoming unfollows with existing follow" do incoming_follow = File.read!("test/fixtures/follow.xml") {:ok, [_activity]} = OStatus.handle_incoming(incoming_follow) |