espace-paie-odentas/STAFF_MAINTENANCE_ACCESS_GUIDE.md
2025-10-12 17:05:46 +02:00

3.5 KiB

Guide d'Accès Staff en Mode Maintenance

Fonctionnalité Implémentée

Cette implémentation permet aux membres du staff de se connecter à l'Espace Paie même lorsque le site est en mode maintenance.

Comment ça fonctionne

1. Page de Maintenance

  • Lorsque le site est en maintenance, un lien discret "Accès équipe" apparaît en bas de la page
  • Ce lien redirige vers /signin?staff_access=true

2. Page de Connexion Staff

  • Quand on accède à /signin avec le paramètre staff_access=true, la page affiche :
    • Un titre spécial : "Connexion Staff - Mode Maintenance"
    • Un avertissement orange : "⚠️ Site en maintenance - Accès équipe uniquement"
    • Tous les modes de connexion habituels (mot de passe et code par email)

3. Middleware Ajusté

  • Le middleware autorise maintenant l'accès à /signin même en mode maintenance
  • Après connexion réussie, les staff peuvent accéder normalement à l'application
  • Les non-staff restent bloqués et redirigés vers la page de maintenance

Flux Utilisateur

Pour un Staff

  1. Visite du site en maintenance → page de maintenance
  2. Clic sur "Accès équipe" → page de connexion staff
  3. Saisie des identifiants → connexion réussie
  4. Redirection vers l'application → accès complet

Pour un Non-Staff

  1. Visite du site en maintenance → page de maintenance
  2. Même s'il trouve le lien "Accès équipe" → page de connexion
  3. Après connexion → redirection vers la page de maintenance (middleware)

Modifications Effectuées

1. app/maintenance/MaintenancePage.tsx

// Ajout du lien d'accès staff dans le footer
<div className="mt-3">
  <a 
    href="/signin?staff_access=true" 
    className="text-xs text-gray-400 hover:text-gray-600 transition-colors duration-200"
  >
    Accès équipe
  </a>
</div>

2. app/signin/page.tsx

// Détection du paramètre staff_access
const [isStaffAccess, setIsStaffAccess] = useState(false);

useEffect(() => {
  const urlParams = new URLSearchParams(window.location.search);
  setIsStaffAccess(urlParams.get('staff_access') === 'true');
}, []);

// Affichage conditionnel du titre et message d'avertissement
{isStaffAccess ? (
  <>
    <Settings size={20} className="inline mr-2 text-orange-500" />
    Connexion Staff - Mode Maintenance
  </>
) : (
  "Connexion à l'Espace Paie"
)}

3. middleware.ts

// Exclusion de /signin du blocage de maintenance
if (!isApiOrAssets && !isMaintenancePage && !isSigninPage) {
  // Vérification du mode maintenance...
}

Sécurité

  • Le lien "Accès équipe" est discret et ne compromet pas la sécurité
  • L'authentification reste obligatoire pour tous
  • Seuls les vrais staff (vérifiés en base) peuvent accéder à l'app après connexion
  • Les non-staff sont toujours bloqués par le middleware après authentification

Test Manuel

  1. Activer le mode maintenance (via le bouton staff dans l'interface)
  2. Se déconnecter
  3. Visiter le site → vérifier la page de maintenance avec le lien
  4. Cliquer sur "Accès équipe" → vérifier la page de connexion staff
  5. Se connecter en tant que staff → vérifier l'accès à l'app
  6. Se connecter en tant que non-staff → vérifier le blocage

Avantages

  • Accès d'urgence pour les staff en cas de maintenance
  • Interface claire indiquant le mode spécial
  • Sécurité préservée (authentification + vérification staff)
  • Fonctionnalité discrète pour les utilisateurs normaux
  • Compatible avec tous les modes de connexion existants