We’ve released a new plugin, Edel Auth for Supabase, on the official WordPress plugin directory. This plugin, as the name suggests, replaces WordPress user authentication with Supabase, a Backend as a Service (BaaS).
Edel Auth for Supabase settings screen in WordPress admin
While there have been plugins that integrate external authentication before, many of them suffer from issues such as unnecessary database bloat and unclear security boundaries. To address these challenges, I designed this plugin from the ground up—and I’m confident it represents a modern, optimal approach to membership management in WordPress. In this article, I’ll explain why I built this plugin and the key technical decisions behind it.

Design Principle 1: Never Store “Real Passwords” in WordPress

When building membership systems, password management is one of the most critical concerns. The defining feature of this plugin is that it never stores real authentication passwords in the WordPress database (wp_users). To maintain compatibility with plugins like WooCommerce, user accounts are still created (synchronized) in WordPress. However, the password field contains only a randomly generated dummy string. All actual authentication is handled entirely through Supabase APIs. This means that even if your WordPress database is compromised, it contains nothing but meaningless random values. User credentials remain protected on the Supabase side, providing a strong security architecture.

Design Principle 2: “Just-in-Time” Synchronization to Keep the Database Clean

Many integration plugins import all external users into WordPress immediately. This can quickly bloat the wp_users and wp_usermeta tables when dealing with thousands of users. Edel Auth for Supabase takes a different approach. User data is created or updated only when a user successfully logs in.
  • No database clutter from inactive or “ghost” users
  • Only active users exist in WordPress, maintaining performance

Design Principle 3: Complete Separation Between Admins and Users

To prevent privilege escalation risks, login entry points are clearly separated:
  • General Users: Login via front-end forms powered by Supabase
  • Administrators: Login via the standard /wp-admin interface
If an administrator attempts to log in via the front-end form, the plugin detects and blocks it. This ensures that the admin panel remains securely isolated.

Design Principle 4: “Keep Alive” for Supabase Free Plan Users

One of my favorite practical features is the Keep Alive function. Supabase’s free plan automatically pauses projects after 7 days of inactivity. This can be frustrating during development or small-scale operations. With Keep Alive enabled, WordPress automatically sends a request to Supabase once per day, preventing the project from being paused. It’s a small feature—but incredibly valuable in real-world usage.

Design Principle 5: Shortcodes for Flexible UI Integration

Default WordPress login screens (wp-login.php) often break the design and user experience of a site. This plugin converts all essential authentication features into shortcodes:
  • [eafs_login] :Login form
  • [eafs_register] :Registration form
  • [eafs_logout] :Logout button
  • [eafs_forgot_password] :Password reset
You can embed these anywhere—pages, widgets, or even modal popups. The HTML structure is intentionally simple, allowing full design flexibility.
Login form created with shortcode
Plugin settings screen
 

Design Principle 6: Developer-Friendly Hooks

I wanted to avoid creating a “black box” plugin. As a developer myself, I intentionally designed extensibility points (hooks) so that other developers can customize behavior. With just a few lines in functions.php, you can implement advanced logic:
  • eafs_user_role filter: Assign roles based on login provider (e.g., Google users as “Contributor,” specific domains as “Administrator”)
  • eafs_after_user_sync action: Sync Supabase metadata (e.g., display name, avatar) to WordPress user meta or log last login time
This ensures the plugin remains flexible and adaptable to real-world requirements.

Download

The plugin is available for free from the official WordPress directory. If you’re looking to build a modern, secure, and database-efficient membership system, give it a try.

この記事をシェア