# 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`
```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`
```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`
```typescript
// 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