{"id":272856,"date":"2026-01-10T21:23:57","date_gmt":"2026-01-10T21:23:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/supabase-auth-bridge\/"},"modified":"2026-02-14T10:21:43","modified_gmt":"2026-02-14T10:21:43","slug":"edel-auth-for-supabase","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/edel-auth-for-supabase\/","author":23425713,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Edel Auth for Supabase","header_author":"Edel Hearts","header_description":"Replace the default WordPress login with Supabase Authentication. Supports Magic Links, Social Login (Google), and auto-syncs users to WordPress.","assets_banners_color":"17545f","last_updated":"2026-02-14 10:21:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/edel-hearts.com\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":276,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"edelhearts","date":"2026-01-10 21:23:31"},"1.0.2":{"tag":"1.0.2","author":"edelhearts","date":"2026-02-14 10:21:43"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3436852,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3436852,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3436852,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3436852,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[710,3098,602,1932,253737],"plugin_category":[38,58],"plugin_contributors":[252745],"plugin_business_model":[],"class_list":["post-272856","plugin","type-plugin","status-publish","hentry","plugin_tags-authentication","plugin_tags-google-login","plugin_tags-login","plugin_tags-membership","plugin_tags-supabase","plugin_category-authentication","plugin_category-user-management","plugin_contributors-edelhearts","plugin_committers-edelhearts"],"banners":{"banner":"https:\/\/ps.w.org\/edel-auth-for-supabase\/assets\/banner-772x250.png?rev=3436852","banner_2x":"https:\/\/ps.w.org\/edel-auth-for-supabase\/assets\/banner-1544x500.png?rev=3436852","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/edel-auth-for-supabase\/assets\/icon-128x128.png?rev=3436852","icon_2x":"https:\/\/ps.w.org\/edel-auth-for-supabase\/assets\/icon-256x256.png?rev=3436852","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin integrates <strong>Supabase Authentication<\/strong> into your WordPress site, providing a secure, scalable, and modern membership system.\nIt allows you to completely separate \"Site Administrators\" (who use WordPress native auth) from \"General Users\" (who use Supabase auth).\nThis ensures your <code>wp-admin<\/code> remains secure while offering a seamless login experience for your customers.<\/p>\n\n<h3>Full Setup Guide<\/h3>\n\n<p>We have prepared a comprehensive guide to help you through the process, including Google Cloud Platform configuration and Supabase settings:\nhttps:\/\/edel-hearts.com\/edel-auth-for-supabase-guide\/?display_lang=en<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Supabase Authentication:<\/strong> Support for Email\/Password, Magic Links (Passwordless), and Social Login (Google).<\/li>\n<li><strong>Auto Synchronization:<\/strong> Users created in Supabase are automatically synced to WordPress as subscribers upon login.<\/li>\n<li><strong>Logout Synchronization:<\/strong> Logging out of WordPress automatically triggers a sign-out from Supabase to ensure session consistency.<\/li>\n<li><strong>User Deletion Sync:<\/strong> Deleting a user in WordPress automatically removes the corresponding user from Supabase (Requires Service Role Key).<\/li>\n<li><strong>Secure Admin Separation:<\/strong> Administrators are blocked from logging in via the frontend forms to prevent privilege escalation attacks.<\/li>\n<li><strong>Smart Password Reset:<\/strong> Automatically detects if a user registered via Google and guides them to use the \"Log in with Google\" button instead of sending a reset email.<\/li>\n<li><strong>Welcome Emails:<\/strong> Sends customizable \"Welcome\" emails directly from WordPress upon successful registration. Custom Sender Name and Email are supported.<\/li>\n<li><strong>Keep Alive (Maintenance):<\/strong> Automatically accesses Supabase once a day to prevent free projects from pausing due to inactivity.<\/li>\n<li><strong>Developer Friendly:<\/strong> Includes hooks for customizing user roles and syncing additional metadata.<\/li>\n<\/ul>\n\n<h3>Why use this plugin?<\/h3>\n\n<p>Unlike other plugins that sync the entire database, <strong>Edel Auth for Supabase<\/strong> authenticates users via the Supabase API on the frontend and only creates a WordPress user session when necessary.\nThis keeps your WordPress database clean and your site fast.<\/p>\n\n<h3>For Developers<\/h3>\n\n<p>You can customize the plugin behavior using the following hooks in your theme's functions.php:<\/p>\n\n<ol>\n<li><p>Filter Hook: eafs_user_role\nThis filter allows you to dynamically change the WordPress user role based on the Supabase provider (e.g., assigning a 'contributor' role to users who log in via Google).<\/p><\/li>\n<li><p>Action Hook: eafs_after_user_sync\nThis action triggers after a user is successfully synced from Supabase to WordPress. It is ideal for updating additional user metadata, such as syncing the display name or recording the last login timestamp.<\/p><\/li>\n<\/ol>\n\n<h3>Shortcodes<\/h3>\n\n<ul>\n<li><code>[eafs_login]<\/code> - Displays the login form.<\/li>\n<li><code>[eafs_register]<\/code> - Displays the registration form.<\/li>\n<li><code>[eafs_forgot_password]<\/code> - Displays the password reset request form.<\/li>\n<li><code>[eafs_update_password]<\/code> - Displays the new password entry form (for the reset flow).<\/li>\n<li><code>[eafs_logout]<\/code> - Displays a logout button (only visible to logged-in users).<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/edel-auth-for-supabase<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Edel Auth (Supabase)<\/strong>.<\/li>\n<li>For a step-by-step walkthrough of the API and Google Login setup, refer to our official guide:\nhttps:\/\/edel-hearts.com\/edel-auth-for-supabase-guide\/?display_lang=en<\/li>\n<\/ol>\n\n<h3>Supabase Setup (Required)<\/h3>\n\n<ol>\n<li>Log in to your <a href=\"https:\/\/supabase.com\/dashboard\">Supabase Dashboard<\/a>.<\/li>\n<li>Go to <strong>Project Settings &gt; API<\/strong>.<\/li>\n<li>Copy the <strong>Project URL<\/strong>, <strong>anon public key<\/strong>, and <strong>service_role secret<\/strong>.<\/li>\n<li>Paste these credentials into the plugin settings page in WordPress.<\/li>\n<\/ol>\n\n<p>* <em>Note: The <code>service_role<\/code> key is stored securely and used for administrative tasks like checking Google users, syncing user deletions, or the \"Keep Alive\" feature.<\/em><\/p>\n\n<h3>Email Setup (Optional)<\/h3>\n\n<p>You can configure the plugin to send a \"Welcome Email\" from WordPress upon new user registration.\nGo to <strong>Settings &gt; Edel Auth (Supabase)<\/strong> and configure the <strong>Welcome Email Settings<\/strong> section.\nYou can specify the Sender Name, Sender Email, Subject, and Body content.<\/p>\n\n<h3>Maintenance Settings (Optional)<\/h3>\n\n<p>If you are using Supabase's Free Plan, projects may be paused after 7 days of inactivity.\nEnable <strong>\"Keep Alive\"<\/strong> in the settings to have WordPress automatically access your Supabase project once a day, preventing it from pausing.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20remove%20the%20%22powered%20by%20supabase%22%20text%20from%20supabase%20emails%3F\"><h3>How do I remove the \"Powered by Supabase\" text from Supabase emails?<\/h3><\/dt>\n<dd><p>This text is automatically added by Supabase if you are using their built-in email service.\nTo remove it, you must configure <strong>Custom SMTP<\/strong> in your Supabase Project Settings.\nOnce configured, you can edit the Email Templates to remove the footer.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20sync%20users%20to%20the%20wordpress%20database%3F\"><h3>Does this plugin sync users to the WordPress database?<\/h3><\/dt>\n<dd><p>Yes, but efficiently.\nA WordPress user record is created (or updated) only when a user successfully logs in via Supabase.\nThis ensures that users exist in WordPress for compatibility with other plugins (like WooCommerce or membership plugins), but authentication is handled by Supabase.<\/p><\/dd>\n<dt id=\"does%20logging%20out%20of%20wordpress%20log%20me%20out%20of%20supabase%3F\"><h3>Does logging out of WordPress log me out of Supabase?<\/h3><\/dt>\n<dd><p>Yes.\nThe plugin detects the WordPress logout action and triggers a sign-out request to Supabase on the frontend, ensuring both sessions are terminated.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20delete%20a%20user%20from%20wordpress%3F\"><h3>What happens if I delete a user from WordPress?<\/h3><\/dt>\n<dd><p>If you have configured the <strong>Service Role Key<\/strong> in the settings, deleting a user from the WordPress admin screen will also delete the corresponding user from your Supabase project.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20google-registered%20user%20tries%20to%20reset%20their%20password%3F\"><h3>What happens if a Google-registered user tries to reset their password?<\/h3><\/dt>\n<dd><p>The plugin's \"Smart Check\" feature detects that the email is associated with a Google provider.\nInstead of sending a reset email (which wouldn't work), it displays a helpful message advising the user to log in with Google.<\/p><\/dd>\n<dt id=\"can%20administrators%20log%20in%20via%20the%20supabase%20form%3F\"><h3>Can Administrators log in via the Supabase form?<\/h3><\/dt>\n<dd><p>No. For security reasons, users with <code>administrator<\/code> privileges are blocked from logging in via the frontend Supabase forms.\nAdmins should continue using the default <code>\/wp-login.php<\/code> or <code>\/wp-admin<\/code>.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20the%20redirect%20url%20for%20google%20login%3F\"><h3>Where can I find the Redirect URL for Google Login?<\/h3><\/dt>\n<dd><p>If you use Google Login, you need to add your site's URL to the <strong>Redirect URLs<\/strong> in Supabase (Authentication &gt; URL Configuration).\nUsually, this is just your site's home URL (e.g., <code>https:\/\/example.com<\/code>).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Updated documentation link and developer hooks instructions.<\/li>\n<li>Fixed code block formatting issues in readme.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed file naming issues and updated branding.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Connect your WordPress site to Supabase Authentication. Securely manage members with Supabase while keeping WordPress admins separate.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272856"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/edelhearts"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272856"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272856"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272856"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272856"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272856"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}