Compare commits

...

2 Commits

Author SHA1 Message Date
29d6ab3d80 Rebuild APK client avec la logique de détection corrigée 2025-11-23 17:23:36 +01:00
429eb07291 Amélioration de la détection APK client vs admin
- Détection basée sur Capacitor Android + adminPassword
- APK client (sans adminPassword) → redirige vers /accueil
- APK admin (avec adminPassword) → redirige vers /admin/login
- Web avec /admin → admin
- Sinon → client
2025-11-23 17:21:22 +01:00
3 changed files with 56 additions and 13 deletions

View File

@ -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"));
if (typeof window !== "undefined") {
const Capacitor = (window as any).Capacitor;
// Méthode 3: Vérifier si on a un mot de passe admin en localStorage
const hasAdminPassword = typeof window !== "undefined" &&
localStorage.getItem("adminPassword") !== null;
// Méthode 1: Vérifier l'appId de Capacitor via le package name Android
if (Capacitor) {
try {
const platform = Capacitor.getPlatform();
// 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 (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é

Binary file not shown.

Binary file not shown.