- Popup consentement salariés: bandeau style identique employeurs, card Odentas, détails visibles, bouton Accepter visible (sky-600) - Hook useAnalyticsConsent: détection pages salariés (/auto-declaration, /signature-salarie) - ConsentManager: orchestrateur affichage popups selon contexte B2B/B2C - PostHogProvider: init conditionnelle au consentement salarié - Politique Section 9 bis: liste exhaustive organismes (Audiens, AGIRC-ARRCO, CNAV, FNAS, FCAP, etc.), adresse postale pour exercice droits - PopupInfoSuivi: card Odentas Media SAS engagement transparence - Conformité RGPD: B2B (intérêt légitime) + B2C (consentement opt-in Article 6.1.a)
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
"use client";
|
|
|
|
import { useEffect, useState } from "react";
|
|
import { usePathname } from "next/navigation";
|
|
|
|
const EMPLOYEE_PAGES = ["/auto-declaration", "/signature-salarie"];
|
|
const CONSENT_KEY = "odentas_analytics_consent_employee";
|
|
|
|
export type ConsentStatus = "pending" | "accepted" | "rejected";
|
|
|
|
export function useAnalyticsConsent() {
|
|
const pathname = usePathname();
|
|
const [consentStatus, setConsentStatus] = useState<ConsentStatus>("pending");
|
|
|
|
// Détecte si on est sur une page salarié
|
|
const isEmployeePage = EMPLOYEE_PAGES.some(page => pathname?.includes(page));
|
|
|
|
useEffect(() => {
|
|
if (!isEmployeePage) {
|
|
// Pas sur une page salarié, pas besoin de consentement
|
|
setConsentStatus("accepted");
|
|
return;
|
|
}
|
|
|
|
// Vérifier si un consentement existe déjà
|
|
try {
|
|
const savedConsent = localStorage.getItem(CONSENT_KEY);
|
|
if (savedConsent === "accepted") {
|
|
setConsentStatus("accepted");
|
|
} else if (savedConsent === "rejected") {
|
|
setConsentStatus("rejected");
|
|
} else {
|
|
setConsentStatus("pending");
|
|
}
|
|
} catch {
|
|
setConsentStatus("pending");
|
|
}
|
|
}, [isEmployeePage, pathname]);
|
|
|
|
const acceptConsent = () => {
|
|
try {
|
|
localStorage.setItem(CONSENT_KEY, "accepted");
|
|
setConsentStatus("accepted");
|
|
} catch {
|
|
console.error("Impossible de sauvegarder le consentement");
|
|
}
|
|
};
|
|
|
|
const rejectConsent = () => {
|
|
try {
|
|
localStorage.setItem(CONSENT_KEY, "rejected");
|
|
setConsentStatus("rejected");
|
|
} catch {
|
|
console.error("Impossible de sauvegarder le refus");
|
|
}
|
|
};
|
|
|
|
return {
|
|
isEmployeePage,
|
|
consentStatus,
|
|
hasConsent: consentStatus === "accepted",
|
|
needsConsent: isEmployeePage && consentStatus === "pending",
|
|
acceptConsent,
|
|
rejectConsent,
|
|
};
|
|
}
|