mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-15 03:09:32 +02:00
Restrict employees from creating tasks and adjust other permissions
Update role permissions to prevent employees from creating tasks, while ensuring they can view tasks and suppliers. Adjustments also made to director and manager permissions for product validation. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/69xEJ3P
This commit is contained in:
1 parent
d2fc6665e2
commit
b986763b6c
4 files changed
+125
-5
No files matched your search
@@ -0,0 +1,121 @@
|
||||
# CORRECTIONS FINALES POUR SERVEUR DE PRODUCTION
|
||||
# Erreurs 403 Employés - Version Corrigée
|
||||
|
||||
## ⚠️ CLARIFICATION IMPORTANTE
|
||||
**Les employés ne doivent PAS créer de tâches, seulement les voir**
|
||||
|
||||
## CORRECTIONS À APPLIQUER SUR VOTRE SERVEUR PRIVÉ
|
||||
|
||||
### 1️⃣ FICHIER: server/routes.ts SEULEMENT
|
||||
**Les permissions dans shared/permissions.ts restent inchangées**
|
||||
|
||||
#### A) Route GET /api/suppliers (environ ligne 188-194):
|
||||
```typescript
|
||||
// REMPLACER:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
|
||||
// PAR:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur' && user.role !== 'employee')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
```
|
||||
|
||||
#### B) Route POST /api/suppliers (environ ligne 240-242):
|
||||
```typescript
|
||||
// REMPLACER:
|
||||
if (user.role !== 'admin' && user.role !== 'manager') {
|
||||
console.error('❌ Insufficient permissions:', { userRole: user.role, required: ['admin', 'manager'] });
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
|
||||
// PAR:
|
||||
if (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur') {
|
||||
console.error('❌ Insufficient permissions:', { userRole: user.role, required: ['admin', 'manager', 'directeur'] });
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
```
|
||||
|
||||
#### C) Route PUT /api/suppliers/:id (environ ligne 281-283):
|
||||
```typescript
|
||||
// REMPLACER:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
|
||||
// PAR:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
```
|
||||
|
||||
#### D) Route DELETE /api/suppliers/:id (environ ligne 298-300):
|
||||
```typescript
|
||||
// REMPLACER:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
|
||||
// PAR:
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'directeur')) {
|
||||
return res.status(403).json({ message: "Insufficient permissions" });
|
||||
}
|
||||
```
|
||||
|
||||
#### E) Route POST /api/dlc-products/:id/validate (environ ligne 2332-2334):
|
||||
```typescript
|
||||
// REMPLACER:
|
||||
if (!user || !['admin', 'manager'].includes(user.role)) {
|
||||
return res.status(403).json({ message: "Insufficient permissions to validate products" });
|
||||
}
|
||||
|
||||
// PAR:
|
||||
if (!user || !['admin', 'manager', 'directeur'].includes(user.role)) {
|
||||
return res.status(403).json({ message: "Insufficient permissions to validate products" });
|
||||
}
|
||||
```
|
||||
|
||||
## 📋 ÉTAPES D'APPLICATION SIMPLIFIÉES
|
||||
|
||||
1. **Sauvegarde** (sur votre serveur de production):
|
||||
```bash
|
||||
cp server/routes.ts server/routes.ts.backup
|
||||
```
|
||||
|
||||
2. **Modification**: Ouvrez `server/routes.ts` et effectuez les 5 corrections ci-dessus
|
||||
|
||||
3. **Redémarrage**: Redémarrez votre serveur Node.js
|
||||
|
||||
4. **Test**: Testez avec un compte employé
|
||||
|
||||
## ✅ RÉSULTAT ATTENDU
|
||||
|
||||
- ✅ Employés peuvent voir les fournisseurs (modules Commandes Client et DLC)
|
||||
- ✅ Employés peuvent voir la page tâches et les tâches existantes
|
||||
- ❌ Employés ne peuvent PAS créer de tâches (comportement inchangé)
|
||||
- ✅ Directeurs peuvent valider les produits DLC
|
||||
- ✅ Plus d'erreurs 403 sur les actions autorisées
|
||||
|
||||
## 🔍 PERMISSIONS FINALES PAR RÔLE
|
||||
|
||||
### Employés:
|
||||
- **Fournisseurs**: Lecture seulement
|
||||
- **Tâches**: Lecture seulement (voir page et tâches)
|
||||
- **Commandes Client**: Voir + Créer
|
||||
- **DLC**: Voir + Créer
|
||||
|
||||
### Problème Résolu:
|
||||
Les erreurs 403 venaient principalement des restrictions d'accès aux **fournisseurs**, pas des tâches. Les employés ont besoin de voir les fournisseurs pour créer des commandes client et des produits DLC.
|
||||
|
||||
## 🧪 COMMANDE DE TEST POST-CORRECTION
|
||||
|
||||
```bash
|
||||
# Test accès fournisseurs pour employé (doit fonctionner):
|
||||
curl -X GET "https://votre-serveur.com/api/suppliers" \
|
||||
-H "Cookie: session=TOKEN_SESSION_EMPLOYE"
|
||||
|
||||
# Résultat attendu: HTTP 200 avec liste des fournisseurs
|
||||
```
|
||||
|
||||
**Note**: Les permissions des tâches restent inchangées - les employés peuvent seulement voir les tâches, pas les créer.
|
||||
@@ -27,7 +27,7 @@ console.log('tasks: {');
|
||||
console.log(' admin: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
|
||||
console.log(' directeur: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
|
||||
console.log(' manager: [\'view\', \'validate\'],');
|
||||
console.log(' employee: [\'view\', \'create\'] // ← CORRECTION');
|
||||
console.log(' employee: [\'view\'] // ← PERMISSIONS INCHANGÉES - VOIR SEULEMENT');
|
||||
console.log('}');
|
||||
console.log('\n');
|
||||
|
||||
|
||||
@@ -7,8 +7,7 @@ index 1234567..abcdefg 100644
|
||||
admin: ['view', 'create', 'edit', 'delete', 'validate'],
|
||||
directeur: ['view', 'create', 'edit', 'delete', 'validate'],
|
||||
manager: ['view', 'validate'],
|
||||
- employee: ['view']
|
||||
+ employee: ['view', 'create']
|
||||
employee: ['view'] // PAS DE CHANGEMENT - VOIR SEULEMENT
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -80,12 +80,12 @@ const PERMISSIONS: Record<Module, Record<Role, Permission[]>> = {
|
||||
employee: ['view', 'create']
|
||||
},
|
||||
|
||||
// Tâches - Admin/Directeur tout, Manager view + validate, Employé view + create
|
||||
// Tâches - Admin/Directeur tout, Manager view + validate, Employé view seulement
|
||||
tasks: {
|
||||
admin: ['view', 'create', 'edit', 'delete', 'validate'],
|
||||
directeur: ['view', 'create', 'edit', 'delete', 'validate'],
|
||||
manager: ['view', 'validate'],
|
||||
employee: ['view', 'create']
|
||||
employee: ['view']
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user