Craft CMS でアクティベートされていないユーザーを削除する

フロントエンドでユーザー登録を許可しているサイトでは「メールアドレスの誤入力」や「いたずら / スパム」による登録など、アクティベートされずに放置されたユーザーが存在することがあります。

そのまま残しておいてもいいのですが、データベースの容量を節約したり、不要な個人情報を保持するリスクを減らす意図から、一定の期間が過ぎてもアクティベートされていないユーザーを削除したいところです。

そこで今回は、Craft CMS でアクティベートされていないユーザーを自動的に削除する方法についてご紹介します。

これは Craft CMS Advent Calendar 2024 12日目の記事です。

環境変数をセットする

有効化されていないユーザーをシステムから削除するまでの期間は、一般設定の purgePendingUsersDuration で調整できます。

General Settings | Craft CMS Documentation | 5.x
https://craftcms.com/docs/5.x/reference/config/general.html#purgependingusersduration

デフォルト値は 0 のため、自動的に削除されることはありません。
明示的に期間を設けたい場合のみ、インストールディレクトリ直下の .env に追記しましょう。

# 有効化されていないユーザーをシステムから削除するまでの期間(2週間)
CRAFT_PURGE_PENDING_USERS_DURATION=1209600

今回の例では「2週間」で指定しています。

利用にあたっての注意点

purgePendingUsersDuration を設定したからといって、期間の経過後に即ユーザーが削除されるわけではありません。

あくまでも 指定期間が過ぎて、最初のガベージコレクションが実行されたタイミング で削除となります。

Garbage Collection | Craft CMS Documentation | 5.x
https://craftcms.com/docs/5.x/system/gc.html

ガベージコレクションはデフォルトで リクエストごとに 1 / 100,000 の確率で実行 される状態のため、多少の誤差が生じる可能性がある点は留意しておきましょう。

最後に

必要になったときに調べてみたら、意外と簡単に設定できるものだったという話なのですが。
たまに時間を作って、公式リファレンスに目を通したいなと改めて思いました。