"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; export default function Home() { const router = useRouter(); const [checked, setChecked] = useState(false); useEffect(() => { // Détecter si on est dans l'app admin let isAdminApp = false; if (typeof window !== "undefined") { const Capacitor = (window as any).Capacitor; // Méthode 1: Vérifier l'appId de Capacitor via le package name Android if (Capacitor) { try { const platform = Capacitor.getPlatform(); if (platform === "android") { // En Android, on peut récupérer le package name via Capacitor.getApp() // APK admin: com.pensionmarama.admin // APK client: com.pensionmarama.app const App = Capacitor.Plugins?.App; if (App) { App.getInfo().then((info: any) => { // Le package name est dans info.id ou info.appId const appId = info.id || info.appId || ""; if (appId.includes("admin")) { isAdminApp = true; } }).catch(() => { // Fallback si getInfo() échoue }); } // Fallback: Vérifier le localStorage (si adminPassword existe, c'est admin) const hasAdminPassword = localStorage.getItem("adminPassword") !== null; if (hasAdminPassword) { isAdminApp = true; } } else { // Pour web, vérifier le localStorage const hasAdminPassword = localStorage.getItem("adminPassword") !== null; if (hasAdminPassword) { isAdminApp = true; } } } catch (e) { // En cas d'erreur, fallback sur les autres méthodes console.warn("Erreur lors de la détection Capacitor:", e); } } // Méthode 2: Vérifier le path ou query string (pour web) if (!isAdminApp && ( window.location.pathname.startsWith("/admin") || window.location.search.includes("admin=true") )) { isAdminApp = true; } // Méthode 3: Si on est dans Capacitor Android sans adminPassword, // on considère que c'est l'app client (redirige vers /accueil) // Sauf si le pathname commence par /admin } if (isAdminApp) { // Vérifier si l'admin est connecté const adminPassword = typeof window !== "undefined" ? localStorage.getItem("adminPassword") : null; if (adminPassword) { // Tester la connexion (si API disponible) fetch("/api/admin/clients", { headers: { Authorization: `Bearer ${adminPassword}`, }, }) .then((res) => { if (res.ok) { router.replace("/admin"); } else if (res.status === 404) { // API non disponible (mode statique) - accepter quand même router.replace("/admin"); } else { localStorage.removeItem("adminPassword"); router.replace("/admin/login"); } }) .catch(() => { // Erreur réseau (API non disponible en mode statique) // Accepter quand même et rediriger vers /admin router.replace("/admin"); }); } else { // Pas de mot de passe, rediriger vers login router.replace("/admin/login"); } } else { // App client normale router.replace("/accueil"); } setChecked(true); }, [router]); if (!checked) { return (
Chargement...