diff --git a/app/(tabs)/home.tsx b/app/(tabs)/home.tsx index 7d27cc4..9e07c1f 100644 --- a/app/(tabs)/home.tsx +++ b/app/(tabs)/home.tsx @@ -14,7 +14,8 @@ export default function Home() { const { chantier, setChantier } = useChantier(); const { role } = useUser(); - + console.log("User", role); + return( diff --git a/app/_layout.tsx b/app/_layout.tsx index 4f98442..4d7b5ff 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -14,7 +14,9 @@ import { auth, db } from "../firebase_config"; import { Platform, UIManager } from 'react-native'; import { ChantierProvider } from "./ContextChantier"; -import { UserProvider } from "./ContextUser"; +import { useUser } from "./ContextUser"; +import { RessourcesProvider } from "./ContextRessource"; +import LoginScreen from "./login/login"; export const unstable_settings = { @@ -24,52 +26,63 @@ export const unstable_settings = { export default function RootLayout() { const colorScheme = useColorScheme(); const router = useRouter(); - const [user, setUser] = useState(null); - const [userRole, setUserRole] = useState(null); + const [loading, setLoading] = useState(true); + const { setUser, setRole, user } = useUser(); useEffect(() => { const unsubscribe = onAuthStateChanged(auth, async (currentUser) => { if (!currentUser) { + console.log("No user logged in"); setUser(null); - setUserRole(null); - router.replace("/login/login"); + setRole(null); + setLoading(false); return; } + setUser(currentUser); + const userDocRef = doc(db, "user", currentUser.uid); const userDoc = await getDoc(userDocRef); - + console.log("User doc data:", userDoc.data()); if (!userDoc.exists()) { - router.replace("/login/login"); setUser(null); - setUserRole(null); + setLoading(false); return; } - - const { role } = userDoc.data(); + setRole(userDoc.data().role); setUser(currentUser); - setUserRole(role); - router.replace("/(tabs)/home"); + setLoading(false); }); - return unsubscribe; + + return unsubscribe; }, []); + if (loading) { + return null; // ou un SplashScreen + } + + return ( - - - - - - - - - - + + + + {user ? ( + + + + + + ) : ( + + )} + + + + - ); } diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..bb4ac54 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,10 @@ +import { Slot } from "expo-router"; +import { UserProvider } from "./ContextUser"; + +export default function Layout() { + return ( + + + + ); +} \ No newline at end of file diff --git a/app/login/login.tsx b/app/login/login.tsx index 8749b17..23955d2 100644 --- a/app/login/login.tsx +++ b/app/login/login.tsx @@ -8,12 +8,14 @@ import { import React, { useState } from "react"; import { Button, StyleSheet, View } from "react-native"; import { auth } from "../../firebase_config"; +import { useUser } from "../ContextUser"; const DEFAULT_ROLE = "resp"; const LoginScreen: React.FC = () => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); + const { setUser, setRole } = useUser(); const handleLogin = async () => { try {