aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2018-05-19 09:30:09 +0000
committerlambda <pleromagit@rogerbraun.net>2018-05-19 09:30:09 +0000
commitad563669c891120f8ff5e416c7ef3d60c831da26 (patch)
tree940813c132f05ecdede85b7c83c73b40ff5e2be8 /lib
parentdf95118c819ae15f0de43519f2f9f9753ac60ec2 (diff)
parent13d4b6d2b5d17c10fb5a95e02ff668de8eeb15ea (diff)
downloadpleroma-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.ex13
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex14
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} =