To set up user authentication on a Webflow site using custom forms, while avoiding Firebase UI, you'll need to manually integrate Firebase Authentication with Webflow through custom JavaScript and form elements.
1. Set Up Firebase Project
- Go to Firebase Console and create a new project.
- Enable Email/Password authentication (or any other method you wish) under Authentication > Sign-in method.
- Go to Project Settings > General, then under Your apps, click Add app > Web and copy the configuration object (apiKey, authDomain, etc.).
2. Add Custom Form Elements in Webflow
- Use Webflow Designer to build your sign-up, log-in, and log-out forms with standard HTML elements (input, submit button, etc.).
- Assign unique IDs or classes to form inputs (e.g.,
#email, #password) and buttons (e.g., #signup-btn, #login-btn).
3. Embed Firebase Auth Logic with Custom JavaScript
- In Webflow, go to Page Settings or use a custom Embed element.
- Paste your Firebase config and initialization script (inside
<script> tags). - Add event listeners for your custom form buttons that use firebase.auth() functions like
createUserWithEmailAndPassword() and signInWithEmailAndPassword(). - Example minor inline reference:
firebase.auth().onAuthStateChanged() can be used to check login state.
4. Handle Form Submission and Authentication State
- Prevent default form submission using
event.preventDefault(). - Use Firebase methods to create or verify users.
- After login, use JavaScript to redirect users (
window.location.href = "/dashboard") or conditionally show/hide content. - Store user state with session storage or use Firebase’s built-in state persistence.
5. Set Up Page Access Control (Frontend Logic)
- Because Webflow doesn’t support server-side logic, use client-side checks:
- On page load, use
onAuthStateChanged() to verify if the user is logged in. - If not authenticated, redirect or block access to private pages.
- Hide/show navigation or gated content based on the user’s login state using DOM manipulation.
6. Secure Backend Data Access (If Needed)
- If your site communicates with Firebase Cloud Functions, Firestore, or any external API, use Firebase security rules to restrict data access based on authentication state.
Summary
To set up user authentication without Firebase UI, build custom forms in Webflow, integrate Firebase manually using JavaScript, and control appearance and functionality entirely yourself. Use client-side logic for login state management and Firebase security rules to protect any backend data.