mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-11-14 13:02:08 +00:00
Add Cron worker to clean up orphaned apps hourly
This commit is contained in:
parent
7bd0750787
commit
a1951f3af7
4 changed files with 41 additions and 1 deletions
|
@ -597,7 +597,8 @@ config :pleroma, Oban,
|
||||||
plugins: [{Oban.Plugins.Pruner, max_age: 900}],
|
plugins: [{Oban.Plugins.Pruner, max_age: 900}],
|
||||||
crontab: [
|
crontab: [
|
||||||
{"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
|
{"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
|
||||||
{"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
|
{"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker},
|
||||||
|
{"0 0 * * *", Pleroma.Workers.Cron.AppCleanupWorker}
|
||||||
]
|
]
|
||||||
|
|
||||||
config :pleroma, Pleroma.Formatter,
|
config :pleroma, Pleroma.Formatter,
|
||||||
|
|
|
@ -165,4 +165,10 @@ defmodule Pleroma.Web.OAuth.App do
|
||||||
end
|
end
|
||||||
|
|
||||||
def maybe_update_owner(_), do: :ok
|
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
|
end
|
||||||
|
|
21
lib/pleroma/workers/cron/app_cleanup_worker.ex
Normal file
21
lib/pleroma/workers/cron/app_cleanup_worker.ex
Normal file
|
@ -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
|
|
@ -53,4 +53,16 @@ defmodule Pleroma.Web.OAuth.AppTest do
|
||||||
|
|
||||||
assert Enum.sort(App.get_user_apps(user)) == Enum.sort(apps)
|
assert Enum.sort(App.get_user_apps(user)) == Enum.sort(apps)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "removes orphaned apps" do
|
||||||
|
attrs = %{client_name: "Mastodon-Local", redirect_uris: "."}
|
||||||
|
{:ok, %App{} = app} = App.get_or_make(attrs, ["write"])
|
||||||
|
assert app.scopes == ["write"]
|
||||||
|
|
||||||
|
assert app == Pleroma.Repo.get_by(App, %{id: app.id})
|
||||||
|
|
||||||
|
App.remove_orphans()
|
||||||
|
|
||||||
|
assert nil == Pleroma.Repo.get_by(App, %{id: app.id})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue