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

103 lines
No EOL
3.5 KiB
Markdown

# 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