summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2024-09-04 10:59:58 -0400
committerMark Felder <feld@feld.me>2024-09-04 10:59:58 -0400
commita1951f3af7e1d5c4d53819962c3e68df5ba4475b (patch)
treee4bde55b2515e50b743d6caa98fc2e5907a3e432 /lib
parent7bd0750787859cb30382d90162d70380441abc05 (diff)
downloadpleroma-a1951f3af7e1d5c4d53819962c3e68df5ba4475b.tar.gz
pleroma-a1951f3af7e1d5c4d53819962c3e68df5ba4475b.zip
Add Cron worker to clean up orphaned apps hourly
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/o_auth/app.ex6
-rw-r--r--lib/pleroma/workers/cron/app_cleanup_worker.ex21
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/pleroma/web/o_auth/app.ex b/lib/pleroma/web/o_auth/app.ex
index f0f54bb46..6ae419d09 100644
--- a/lib/pleroma/web/o_auth/app.ex
+++ b/lib/pleroma/web/o_auth/app.ex
@@ -165,4 +165,10 @@ defmodule Pleroma.Web.OAuth.App do
end
def maybe_update_owner(_), do: :ok
+
+ @spec remove_orphans() :: :ok
+ def remove_orphans() do
+ from(a in __MODULE__, where: is_nil(a.user_id))
+ |> Repo.delete_all()
+ end
end
diff --git a/lib/pleroma/workers/cron/app_cleanup_worker.ex b/lib/pleroma/workers/cron/app_cleanup_worker.ex
new file mode 100644
index 000000000..ee71cd7b6
--- /dev/null
+++ b/lib/pleroma/workers/cron/app_cleanup_worker.ex
@@ -0,0 +1,21 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Workers.Cron.AppCleanupWorker do
+ @moduledoc """
+ Cleans up registered apps that were never associated with a user.
+ """
+
+ use Oban.Worker, queue: "background"
+
+ alias Pleroma.Web.OAuth.App
+
+ @impl true
+ def perform(_job) do
+ App.remove_orphans()
+ end
+
+ @impl true
+ def timeout(_job), do: :timer.seconds(30)
+end