import type { Route } from "./+types/login"; import { Alert, AlertDescription } from "~/components/ui/alert"; import { AlertCircleIcon, LoaderCircle, LogIn, MailIcon } from "lucide-react"; import { Label } from "~/components/ui/label"; import { Input } from "~/components/ui/input"; import { Button } from "~/components/ui/button"; import { useState } from "react"; import AuthLayout from "~/layout"; import { requestLogin } from "~/lib/api"; import { useNavigate } from "react-router"; import { Turnstile } from "@marsidev/react-turnstile"; const siteKey = import.meta.env.VITE_TURNSTILE_SITE_KEY; export function meta({}: Route.MetaArgs) { return [ { title: "Khollisé - Connexion" }, { name: "description", content: "Connectez-vous à Khollisé" }, ]; } export default function Login() { const navigate = useNavigate(); const [email, setEmail] = useState(""); const [token, setToken] = useState(null); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const validateEmail = (email: string) => email.endsWith("@bginette.fr"); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); if (!validateEmail(email)) return setError("Seules les adresses email @bginette.fr sont autorisées"); if (!token) return setError("Veuillez valider le captcha avant de continuer"); setIsLoading(true); await requestLogin(email, token) .then((data) => { setIsLoading(false); const url = `/verify?email=${encodeURIComponent(email)}&token=${ data?.token }`; navigate(url, { replace: true, }); }) .catch((err) => { setIsLoading(false); setError(err.message); }); }; return (
setEmail(e.target.value)} required />

Seules les adresses email{" "} @bginette.fr sont acceptées.

{error && ( {error} )}
); }