diff options
author | lambda <pleromagit@rogerbraun.net> | 2018-05-19 09:30:09 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2018-05-19 09:30:09 +0000 |
commit | ad563669c891120f8ff5e416c7ef3d60c831da26 (patch) | |
tree | 940813c132f05ecdede85b7c83c73b40ff5e2be8 /lib | |
parent | df95118c819ae15f0de43519f2f9f9753ac60ec2 (diff) | |
parent | 13d4b6d2b5d17c10fb5a95e02ff668de8eeb15ea (diff) | |
download | pleroma-ad563669c891120f8ff5e416c7ef3d60c831da26.tar.gz |
Merge branch 'feature/remote-user-deactivation' into 'develop'
remote user deactivation
See merge request pleroma/pleroma!154
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mix/tasks/deactivate_user.ex | 13 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 14 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/mix/tasks/deactivate_user.ex b/lib/mix/tasks/deactivate_user.ex new file mode 100644 index 000000000..96b3db6e4 --- /dev/null +++ b/lib/mix/tasks/deactivate_user.ex @@ -0,0 +1,13 @@ +defmodule Mix.Tasks.DeactivateUser do + use Mix.Task + alias Pleroma.User + + @shortdoc "Toggle deactivation status for a user" + def run([nickname]) do + Mix.Task.run("app.start") + + with user <- User.get_by_nickname(nickname) do + User.deactivate(user) + end + end +end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 3e1977f96..973d18e52 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -16,9 +16,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do (data["to"] || []) ++ (data["cc"] || []) end + defp check_actor_is_active(actor) do + if not is_nil(actor) do + with user <- User.get_cached_by_ap_id(actor), + nil <- user.info["deactivated"] do + :ok + else + _e -> :reject + end + else + :ok + end + end + def insert(map, local \\ true) when is_map(map) do with nil <- Activity.get_by_ap_id(map["id"]), map <- lazy_put_activity_defaults(map), + :ok <- check_actor_is_active(map["actor"]), {:ok, map} <- MRF.filter(map), :ok <- insert_full_object(map) do {:ok, activity} = |