エーデルハーツ

Custom WordPress Support & Development

【公式リリース】Supabase認証WordPressプラグイン「Edel Auth for Supabase」

WordPress公式ディレクトリに、新しいプラグイン「Edel Auth for Supabase」を公開しました。

このプラグインは、その名の通りWordPressの会員認証をBaaS(Backend as a Service)である「Supabase」に置き換えるものです。

これまでも会員機能を外部連携するプラグインはありましたが、既存のものには「データベースが無駄に肥大化する」「セキュリティ境界が曖昧」といった課題がありました。それらを解決するために設計し、我ながら「WordPressにおけるモダンな会員管理の最適解」と言える仕上がりになったと自負しています。

今回は、なぜこのプラグインを作ったのか、その技術的なこだわりを紹介します。

こだわり1:WordPress側に「本当のパスワード」を持たせない

会員サイトを構築する際、最も神経を使うのがパスワードの管理です。 このプラグインの最大の特徴は、WordPressのデータベース(wp_users)には、認証に使う「本当のパスワード」を一切保存しないという点です。

WooCommerceなどの他プラグインとの互換性を保つために、WordPress側にもユーザーアカウント自体は作成します(同期します)。しかし、そのパスワード欄に格納されるのは、システムが自動生成した複雑でランダムなダミー文字列です。

実際の認証(ログイン判定)はすべてSupabase側のAPIで行われます。

つまり、万が一WordPressサイトが侵害され、データベースが流出したとしても、そこにあるのは無意味な乱数だけ。ユーザーのログイン資格情報(Supabase側のパスワード)は守られるという、強固なセキュリティ構造を実現しました。

こだわり2:DBを汚さない「Just-in-Time」同期

多くの連携プラグインは、導入した瞬間に外部サービスの全ユーザーをWordPressに取り込もうとします。しかし、数千、数万人のユーザーがいる場合、WordPressのデータベース(wp_users / wp_usermeta)は一瞬で肥大化してしまいます。

「Edel Auth for Supabase」は違います。 ユーザーが「ログインに成功した瞬間」にだけ、そのユーザー情報をWordPress側に作成(または更新)します。

  • サイトを利用していない「幽霊会員」のデータでDBを圧迫しません。
  • 常に最新のアクティブユーザーだけがWordPress上に存在するため、サイトのパフォーマンスを維持できます。

こだわり3:管理者と一般ユーザーの「完全分離」

セキュリティリスクの一つである「権限昇格攻撃」を防ぐため、ログインの入り口を明確に分けました。

  • 一般ユーザー: Supabase経由のフロントエンドフォームからログイン
  • 管理者(Administrator): 従来の /wp-admin からWordPress標準機能でログイン

管理者が誤ってフロントエンドのフォームからログインしようとすると、プラグインがそれを検知してブロックします。これにより、管理画面への入り口をしっかりと守ることができます。

こだわり4:Supabase無料枠ユーザーへの愛「Keep Alive」

個人的に一番気に入っている、実用的な機能がこれです。 SupabaseのFreeプランは素晴らしいですが、1週間アクセスがないとプロジェクトが一時停止(Pause)してしまう仕様があります。開発中や小規模な運用では、これで困ることがよくあります。

そこで、プラグインに「Keep Alive」機能を搭載しました。 これをONにしておけば、WordPressが1日1回、自動的にSupabaseへアクセスを行い、プロジェクトの停止を防ぎます。地味ですが、運用者には涙が出るほどありがたい機能はずです。

こだわり5:ショートコードで「どこでも」フォーム化

WordPress標準のログイン画面(wp-login.php)に飛ばされる仕様は、サイトの世界観を壊してしまいがちです。 このプラグインでは、登録・ログイン・ログアウト・パスワードリセットといった必要なフォームをすべてショートコード化しました。

  • [eafs_login] :ログインフォーム
  • [eafs_register] :新規登録フォーム
  • [eafs_logout] :ログアウトボタン
  • [eafs_forgot_password] :パスワードリセット

固定ページに埋め込んで「会員専用ログインページ」を作るのはもちろん、サイドバーのウィジェットや、ポップアップモーダルの中に設置することも可能です。 デザインや導線を自由に設計できるよう、HTML構造もシンプルに保っています。

もちろん、管理画面内に設定ページも用意しています。

 

こだわり6:開発者のための「拡張フック」

「かゆいところに手が届かない」プラグインにはしたくありませんでした。 私自身が受託開発を行うエンジニアだからこそ、カスタマイズの余地(Hooks)を意図的に用意しています。

例えば、functions.php に少しコードを書くだけで、以下のような高度な制御が可能です。

  • eafs_user_role フィルター: 「Googleログインで登録した人だけ『寄稿者』権限にする」「特定のドメインのメールアドレスは『管理者』にする」といった、認証プロバイダに応じた権限の振り分けが可能です。
  • eafs_after_user_sync アクション: Supabase側で持っているメタデータ(表示名やアイコンURLなど)を、WordPressのユーザーメタデータに同期させたり、最終ログイン時間を記録したりする処理を簡単に追加できます。

ブラックボックス化せず、開発者が自社の要件に合わせて拡張できる「余白」を残した設計にこだわりました。

ダウンロード

WordPress公式ディレクトリから無料でダウンロード可能です。 モダンでセキュア、そしてデータベースに優しい会員サイト構築をお考えの方は、ぜひ試してみてください。

公式ディレクトリで Edel Auth for Supabase をチェックする