From e32c9d33fa334ce88bdb3beef99fce1b359f53b6 Mon Sep 17 00:00:00 2001 From: Med Kamel Date: Wed, 16 Apr 2025 02:22:34 +0100 Subject: [PATCH] initial commit --- app.rar | Bin 3869 -> 0 bytes app/constants/colors.ts | 2 +- app/screens/auth/SignInScreen.tsx | 301 +++++- app/screens/auth/_layout.tsx | 1 + app/screens/user/UserHomeScreen.tsx | 10 +- firebase/auth.ts | 49 + firebase/config.ts | 18 + package-lock.json | 1480 ++++++++++++++++++++++++++- package.json | 5 + 9 files changed, 1843 insertions(+), 23 deletions(-) delete mode 100644 app.rar create mode 100644 firebase/auth.ts create mode 100644 firebase/config.ts diff --git a/app.rar b/app.rar deleted file mode 100644 index a885024765e23e10d686711b809f5f7ae96b11f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3869 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 diff --git a/app/constants/colors.ts b/app/constants/colors.ts index e1486b0..0e15b4c 100644 --- a/app/constants/colors.ts +++ b/app/constants/colors.ts @@ -1,7 +1,7 @@ const COLORS = { background_user: '#FFFFFF', text: '#FFFFFF', - primary: '#B07B2C', + primary: '#B17741', }; export default COLORS; diff --git a/app/screens/auth/SignInScreen.tsx b/app/screens/auth/SignInScreen.tsx index 200539a..d8d86c5 100644 --- a/app/screens/auth/SignInScreen.tsx +++ b/app/screens/auth/SignInScreen.tsx @@ -1,34 +1,299 @@ -import React from 'react'; -import { View, Text, StyleSheet, Button } from 'react-native'; -import { router } from 'expo-router'; +import { useState } from "react"; +import { + View, + Text, + TextInput, + Pressable, + StyleSheet, + Image, + Alert, + TouchableOpacity, +} from "react-native"; +import { Eye, EyeOff } from "lucide-react-native"; +import { router } from "expo-router"; +import { signIn } from "../../../firebase/auth"; // Assure-toi que le chemin est correct +import { Link } from "expo-router"; + + + const SignInScreen = () => { + const [form, setForm] = useState({ + email: "", + password: "", + rememberMe: false, + }); + + const [errors, setErrors] = useState({ + email: "", + password: "", + }); + + const [showPassword, setShowPassword] = useState(false); + + const validateForm = () => { + let valid = true; + const newErrors = { email: "", password: "" }; + + if (!form.email) { + newErrors.email = "L'e-mail est requis."; + valid = false; + } + + if (!form.password) { + newErrors.password = "Le mot de passe est requis."; + valid = false; + } + + setErrors(newErrors); + return valid; + }; + + const handleLogin = async () => { + if (!validateForm()) return; + + try { + const { user } = await signIn(form.email, form.password); // Destructure to get user + console.log("Connexion réussie :", user.email); // Access the email directly + router.replace("/screens/user/UserHomeScreen"); // You can route based on role later + } catch (error: any) { + Alert.alert("Erreur", error.message); // Display the error message + } + }; + return ( - Sign In Screen -