forked from AkkomaGang/akkoma
Disallow following locked accounts over OStatus
This commit is contained in:
parent
8980c1c769
commit
813c686dd7
2 changed files with 12 additions and 0 deletions
|
@ -14,9 +14,13 @@ def handle(entry, doc) do
|
||||||
followed_uri when not is_nil(followed_uri) <-
|
followed_uri when not is_nil(followed_uri) <-
|
||||||
XML.string_from_xpath("/entry/activity:object/id", entry),
|
XML.string_from_xpath("/entry/activity:object/id", entry),
|
||||||
{:ok, followed} <- OStatus.find_or_make_user(followed_uri),
|
{:ok, followed} <- OStatus.find_or_make_user(followed_uri),
|
||||||
|
{:locked, false} <- {:locked, followed.info.locked},
|
||||||
{:ok, activity} <- ActivityPub.follow(actor, followed, id, false) do
|
{:ok, activity} <- ActivityPub.follow(actor, followed, id, false) do
|
||||||
User.follow(actor, followed)
|
User.follow(actor, followed)
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
|
else
|
||||||
|
{:locked, true} ->
|
||||||
|
{:error, "It's not possible to follow locked accounts over OStatus"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -326,6 +326,14 @@ test "handle incoming follows" do
|
||||||
assert User.following?(follower, followed)
|
assert User.following?(follower, followed)
|
||||||
end
|
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
|
test "handle incoming unfollows with existing follow" do
|
||||||
incoming_follow = File.read!("test/fixtures/follow.xml")
|
incoming_follow = File.read!("test/fixtures/follow.xml")
|
||||||
{:ok, [_activity]} = OStatus.handle_incoming(incoming_follow)
|
{:ok, [_activity]} = OStatus.handle_incoming(incoming_follow)
|
||||||
|
|
Loading…
Reference in a new issue