import React, { createContext, useContext, useEffect, useState } from 'react'; import { auth, db } from '../firebase/config'; import { onAuthStateChanged, signInWithEmailAndPassword, signOut } from 'firebase/auth'; import { ref, get } from 'firebase/database'; export const AuthContext = createContext(); export const useAuth = () => { return useContext(AuthContext); }; export const AuthProvider = ({ children }) => { const [currentUser, setCurrentUser] = useState(null); const [userRole, setUserRole] = useState(null); const [loading, setLoading] = useState(true); const login = async (email, password) => { return signInWithEmailAndPassword(auth, email, password); }; const logout = () => { return signOut(auth); }; useEffect(() => { const unsubscribe = onAuthStateChanged(auth, async (user) => { if (user) { setCurrentUser(user); // Obtener rol del usuario desde DB try { const userRef = ref(db, `users/${user.uid}`); const snapshot = await get(userRef); if (snapshot.exists()) { setUserRole(snapshot.val().role); } else { console.log("Rol no definido para este usuario = asume default"); setUserRole('comensal'); } } catch (error) { console.error("Error al obtener el rol del usuario", error); } } else { setCurrentUser(null); setUserRole(null); } setLoading(false); }); return unsubscribe; }, []); const value = { currentUser, userRole, login, logout }; return ( {!loading && children} ); };