mirror of
https://github.com/R0m1k3/Regisflow.git
synced 2026-10-11 17:29:48 +02:00
Provide tools to diagnose user list visibility issue in production
Adds a debug script and markdown guide to troubleshoot admin user access problems. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 4b008663-bd72-492b-b0b6-fa252367e730 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/4b008663-bd72-492b-b0b6-fa252367e730/gfGF2TH
This commit is contained in:
1 parent
2fe3385129
commit
d7f7e6a0fd
2 files changed
+181
-24
No files matched your search
@@ -0,0 +1,110 @@
|
||||
# DIAGNOSTIC - Problème liste utilisateurs en production
|
||||
|
||||
## 🚨 Problème signalé
|
||||
La liste des utilisateurs n'apparaît plus dans l'administration en production.
|
||||
|
||||
## ✅ État en développement
|
||||
- API `/api/admin/users` fonctionne correctement
|
||||
- Retourne 5 utilisateurs : admin, gael, FFNANCY, ff292, ff579
|
||||
- Interface d'administration accessible
|
||||
|
||||
## 🔍 Diagnostic production
|
||||
|
||||
### 1. Vérifier l'utilisateur admin
|
||||
```bash
|
||||
docker exec regisflow-regisflow-1 psql -U regisflow -d regisflow -c "
|
||||
SELECT 'ADMIN ACTUEL:' as info, id, username, role, store_id, is_active
|
||||
FROM users WHERE username IN ('gael', 'admin') ORDER BY id;
|
||||
"
|
||||
```
|
||||
|
||||
### 2. Tester l'authentification
|
||||
```bash
|
||||
# Test de connexion
|
||||
curl -X POST http://votre-domaine:5000/api/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"gael","password":"votre_mot_de_passe"}' \
|
||||
-c /tmp/prod_admin.txt
|
||||
|
||||
# Vérifier les infos utilisateur
|
||||
curl http://votre-domaine:5000/api/auth/me \
|
||||
-b /tmp/prod_admin.txt
|
||||
```
|
||||
|
||||
### 3. Tester la route admin
|
||||
```bash
|
||||
# Test route utilisateurs admin
|
||||
curl http://votre-domaine:5000/api/admin/users \
|
||||
-b /tmp/prod_admin.txt
|
||||
|
||||
# Réponse attendue : JSON array avec les utilisateurs
|
||||
# Erreur possible : {"error":"Insufficient permissions"}
|
||||
```
|
||||
|
||||
### 4. Vérifier les logs d'application
|
||||
```bash
|
||||
docker logs regisflow-regisflow-1 --tail 50 | grep -E "(admin|users|403|500)"
|
||||
```
|
||||
|
||||
## 🔧 Solutions possibles
|
||||
|
||||
### Solution 1: Problème de permissions utilisateur
|
||||
```sql
|
||||
-- Si l'utilisateur gael n'a pas les bons droits
|
||||
UPDATE users SET role = 'administrator', store_id = NULL WHERE username = 'gael';
|
||||
```
|
||||
|
||||
### Solution 2: Session expirée ou corrompue
|
||||
```bash
|
||||
# Redémarrer l'application pour nettoyer les sessions
|
||||
docker restart regisflow-regisflow-1
|
||||
```
|
||||
|
||||
### Solution 3: Problème de route middleware
|
||||
- Vérifier que la route `/api/admin/users` utilise `requireRole(['administrator'])`
|
||||
- S'assurer que `gael` a bien le rôle `administrator` (pas `admin`)
|
||||
|
||||
### Solution 4: Frontend cache/build
|
||||
```bash
|
||||
# En cas de problème de cache frontend
|
||||
docker exec regisflow-regisflow-1 rm -rf /app/dist
|
||||
docker restart regisflow-regisflow-1
|
||||
```
|
||||
|
||||
## 📊 État attendu après correction
|
||||
|
||||
### Base de données
|
||||
```sql
|
||||
-- Utilisateur gael doit avoir :
|
||||
id | username | role | store_id | is_active
|
||||
3 | gael | administrator | NULL | true
|
||||
```
|
||||
|
||||
### API Response
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": 3,
|
||||
"username": "gael",
|
||||
"role": "administrator",
|
||||
"storeId": null,
|
||||
"isActive": true,
|
||||
...
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
### Interface
|
||||
- Liste des utilisateurs visible dans l'onglet Administration
|
||||
- Possibilité de créer/modifier/supprimer des utilisateurs
|
||||
- Accès aux autres onglets (Magasins, Sauvegarde, Purge)
|
||||
|
||||
## 🚀 Commande de correction complète
|
||||
```bash
|
||||
# Correction en une seule commande
|
||||
docker exec regisflow-regisflow-1 psql -U regisflow -d regisflow -c "
|
||||
UPDATE users SET role = 'administrator', store_id = NULL WHERE username = 'gael';
|
||||
SELECT 'UTILISATEUR CORRIGÉ:' as status, id, username, role, store_id FROM users WHERE username = 'gael';
|
||||
" && docker restart regisflow-regisflow-1
|
||||
```
|
||||
+71
-24
@@ -1,30 +1,77 @@
|
||||
// Script de debug pour forcer la correction admin en production
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
#!/usr/bin/env node
|
||||
|
||||
// Simuler la correction directement dans le code pour production
|
||||
const fixProductionAdmin = () => {
|
||||
console.log('=== DEBUG ADMIN PRODUCTION ===');
|
||||
console.log('Problème identifié:');
|
||||
console.log('- Logs montrent: ID 3, email tronqué "admin@exampl"');
|
||||
console.log('- Utilisateur connecté différent entre dev (ID 1) et prod (ID 3)');
|
||||
console.log('');
|
||||
/**
|
||||
* Script de diagnostic pour problème administration production
|
||||
* Teste les routes d'administration et permissions
|
||||
*/
|
||||
|
||||
console.log('SOLUTIONS à appliquer:');
|
||||
console.log('1. Corriger base de données production:');
|
||||
console.log(' UPDATE users SET role = \'administrator\' WHERE id = 3;');
|
||||
console.log('');
|
||||
console.log('2. Ou créer utilisateur admin correct:');
|
||||
console.log(' INSERT INTO users (username, password, email, role, store_id) VALUES');
|
||||
console.log(' (\'admin\', \'$2b$12$hashed_password\', \'admin@example.com\', \'administrator\', NULL);');
|
||||
console.log('');
|
||||
const https = require('https');
|
||||
const http = require('http');
|
||||
|
||||
console.log('3. Vérifier les sessions:');
|
||||
console.log(' DELETE FROM sessions WHERE data LIKE \'%"id":3%\';');
|
||||
};
|
||||
// Configuration production - remplacez par votre domaine
|
||||
const PROD_URL = 'your-production-domain.com';
|
||||
const PROD_PORT = 5000;
|
||||
|
||||
if (require.main === module) {
|
||||
fixProductionAdmin();
|
||||
// Test des routes d'administration
|
||||
async function testAdminRoutes() {
|
||||
console.log('🔍 DIAGNOSTIC ADMINISTRATION PRODUCTION');
|
||||
console.log('=====================================');
|
||||
|
||||
// 1. Test de connexion auth
|
||||
console.log('\n1. Test connexion administrateur...');
|
||||
try {
|
||||
const loginData = {
|
||||
username: 'gael', // ou l'utilisateur admin en production
|
||||
password: 'your_password' // Remplacez par le bon mot de passe
|
||||
};
|
||||
|
||||
console.log('POST /api/auth/login');
|
||||
console.log('- Username:', loginData.username);
|
||||
console.log('- Vérifiez le mot de passe manuellement');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Erreur login:', error.message);
|
||||
}
|
||||
|
||||
// 2. Test route /api/admin/users
|
||||
console.log('\n2. Test route admin users...');
|
||||
console.log('GET /api/admin/users');
|
||||
console.log('- Route nécessite role: administrator');
|
||||
console.log('- Utilisateur gael doit avoir store_id = NULL');
|
||||
|
||||
// 3. Test route /api/auth/me
|
||||
console.log('\n3. Test informations utilisateur...');
|
||||
console.log('GET /api/auth/me');
|
||||
console.log('- Doit retourner role: administrator');
|
||||
console.log('- Doit retourner storeId: null');
|
||||
|
||||
console.log('\n📋 COMMANDES DE DIAGNOSTIC PRODUCTION:');
|
||||
console.log('=====================================');
|
||||
|
||||
console.log('\n# 1. Vérifier l\'état de l\'utilisateur admin:');
|
||||
console.log('docker exec regisflow-regisflow-1 psql -U regisflow -d regisflow -c "SELECT id, username, role, store_id FROM users WHERE username = \'gael\';"');
|
||||
|
||||
console.log('\n# 2. Tester la route d\'administration:');
|
||||
console.log('curl -X POST http://votre-domaine:5000/api/auth/login \\');
|
||||
console.log(' -H "Content-Type: application/json" \\');
|
||||
console.log(' -d \'{"username":"gael","password":"votre_mot_de_passe"}\' \\');
|
||||
console.log(' -c /tmp/admin_test.txt');
|
||||
|
||||
console.log('\ncurl http://votre-domaine:5000/api/admin/users \\');
|
||||
console.log(' -b /tmp/admin_test.txt');
|
||||
|
||||
console.log('\n# 3. Vérifier les logs de l\'application:');
|
||||
console.log('docker logs regisflow-regisflow-1 --tail 50');
|
||||
|
||||
console.log('\n# 4. Si problème de permissions, corriger:');
|
||||
console.log('docker exec regisflow-regisflow-1 psql -U regisflow -d regisflow -c "UPDATE users SET role = \'administrator\', store_id = NULL WHERE username = \'gael\';"');
|
||||
console.log('docker restart regisflow-regisflow-1');
|
||||
|
||||
console.log('\n✅ RÉSULTATS ATTENDUS:');
|
||||
console.log('- /api/admin/users retourne un tableau JSON des utilisateurs');
|
||||
console.log('- Interface d\'administration affiche la liste');
|
||||
console.log('- Pas d\'erreur "Insufficient permissions"');
|
||||
}
|
||||
|
||||
module.exports = fixProductionAdmin;
|
||||
// Exécuter le diagnostic
|
||||
testAdminRoutes().catch(console.error);
|
||||
Reference in new issue
Block a user