103 lines
No EOL
3.5 KiB
Markdown
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 |