Acceso a Conseller SaaS body { font-family: 'Roboto', sans-serif; } .form-input { border-radius: 30px !important; border: 1px solid #d1d5db; padding: 0.75rem 1.25rem; transition: all 0.2s ease-in-out; } .form-input:focus { --tw-ring-color: #a020f0; border-color: #a020f0; box-shadow: 0 0 0 2px var(--tw-ring-color); } .btn-primary { border-radius: 30px !important; background-color: #a020f0 !important; color: #ffffff !important; padding: 0.75rem 1.5rem; font-weight: 700; transition: background-color 0.2s; } .btn-primary:hover { background-color: #7a15cc !important; }

Bienvenido

Inicia sesión para continuar

¿No tienes una cuenta? Regístrate

¿Olvidaste tu contraseña?

// Importa las funciones que necesitas de los SDKs import { initializeApp } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-app.js"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, onAuthStateChanged, sendPasswordResetEmail } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-auth.js"; import { getFirestore, doc, setDoc, serverTimestamp, collection } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-firestore.js"; // Tu configuración de Firebase const firebaseConfig = { apiKey: "AIzaSyDItcChmC_MCf424oYXCA-BZ0EnM4thAsA", authDomain: "conseller-crm.firebaseapp.com", projectId: "conseller-crm", storageBucket: "conseller-crm.firebasestorage.app", messagingSenderId: "878861223640", appId: "1:878861223640:web:024d87a0d79014c46cf9ad", measurementId: "G-Z06W4NBZ4B" }; // Initialize Firebase const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); // DOM Elements const loginView = document.getElementById('login-view'); const registerView = document.getElementById('register-view'); const resetView = document.getElementById('reset-view'); // View Toggles document.getElementById('show-register').addEventListener('click', () => { loginView.classList.add('hidden'); resetView.classList.add('hidden'); registerView.classList.remove('hidden'); }); document.getElementById('show-login').addEventListener('click', () => { registerView.classList.add('hidden'); resetView.classList.add('hidden'); loginView.classList.remove('hidden'); }); document.getElementById('show-reset').addEventListener('click', () => { loginView.classList.add('hidden'); registerView.classList.add('hidden'); resetView.classList.remove('hidden'); }); document.getElementById('back-to-login').addEventListener('click', () => { resetView.classList.add('hidden'); registerView.classList.add('hidden'); loginView.classList.remove('hidden'); }); // Redirect if user is already logged in onAuthStateChanged(auth, user => { if (user) { // Si el usuario ya está autenticado, lo redirige al dashboard. // Asegúrate de que el nombre del archivo coincida. window.location.href = 'dashboard.html'; } }); // Login Logic document.getElementById('login-form').addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('login-email').value; const password = document.getElementById('login-password').value; const messageEl = document.getElementById('login-message'); try { await signInWithEmailAndPassword(auth, email, password); // La redirección se maneja con onAuthStateChanged } catch (error) { console.error("Error de inicio de sesión:", error.message); messageEl.textContent = "Correo o contraseña incorrectos."; } }); // Register Logic document.getElementById('register-form').addEventListener('submit', async (e) => { e.preventDefault(); const companyName = document.getElementById('register-company').value; const email = document.getElementById('register-email').value; const password = document.getElementById('register-password').value; const messageEl = document.getElementById('register-message'); try { const userCredential = await createUserWithEmailAndPassword(auth, email, password); const user = userCredential.user; // 1. Crear el documento de la compañía const companyRef = doc(collection(db, "companies")); const trialEndDate = new Date(); trialEndDate.setDate(trialEndDate.getDate() + 30); await setDoc(companyRef, { companyName: companyName, ownerId: user.uid, createdAt: serverTimestamp(), subscription: { plan: 'trial', status: 'active', trialEndDate: trialEndDate.toISOString() } }); // 2. Crear el documento del usuario y vincularlo a la compañía await setDoc(doc(db, "users", user.uid), { email: user.email, companyId: companyRef.id, role: 'admin' // El primer usuario es siempre el admin }); // Redirección se maneja con onAuthStateChanged } catch (error) { console.error("Error de registro:", error.message); if (error.code === 'auth/email-already-in-use') { messageEl.textContent = "Este correo electrónico ya está en uso."; } else { messageEl.textContent = "Error al crear la cuenta."; } } }); // Password Reset Logic document.getElementById('reset-form').addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('reset-email').value; const messageEl = document.getElementById('reset-message'); try { await sendPasswordResetEmail(auth, email); messageEl.textContent = "¡Revisa tu correo! Te hemos enviado un enlace para restablecer tu contraseña."; messageEl.className = "mt-4 text-center text-green-600"; } catch (error) { console.error("Error al enviar correo de reseteo:", error.message); messageEl.textContent = "No se pudo enviar el correo. Verifica que la dirección sea correcta."; messageEl.className = "mt-4 text-center text-red-500"; } });