フロントエンドでユーザー登録を許可しているサイトでは「メールアドレスの誤入力」や「いたずら / スパム」による登録など、アクティベートされずに放置されたユーザーが存在することがあります。
そのまま残しておいてもいいのですが、データベースの容量を節約したり、不要な個人情報を保持するリスクを減らす意図から、一定の期間が過ぎてもアクティベートされていないユーザーを削除したいところです。
そこで今回は、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 の確率で実行
される状態のため、多少の誤差が生じる可能性がある点は留意しておきましょう。
最後に
必要になったときに調べてみたら、意外と簡単に設定できるものだったという話なのですが。
たまに時間を作って、公式リファレンスに目を通したいなと改めて思いました。