diff --git a/app/page.tsx b/app/page.tsx index 62ff5c3..cce2376 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -9,20 +9,63 @@ export default function Home() { useEffect(() => { // Détecter si on est dans l'app admin - // Méthode 1: Vérifier si Capacitor est disponible (APK) - const isCapacitor = typeof window !== "undefined" && (window as any).Capacitor; + let isAdminApp = false; - // Méthode 2: Vérifier le user agent ou l'URL - const isAdminPath = typeof window !== "undefined" && - (window.location.pathname.startsWith("/admin") || - window.location.search.includes("admin=true")); - - // Méthode 3: Vérifier si on a un mot de passe admin en localStorage - const hasAdminPassword = typeof window !== "undefined" && - localStorage.getItem("adminPassword") !== null; - - // Si on est dans Capacitor OU qu'on a un mot de passe admin, c'est l'app admin - const isAdminApp = isCapacitor || isAdminPath || hasAdminPassword; + 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é