mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-23 23:18:18 +02:00
Improve user data retrieval and add production debugging tools
Update the API to fetch users with simplified logic and introduce detailed SQL scripts and logging for production issue diagnosis. Replit-Commit-Author: Agent Replit-Commit-Session-Id: a8a78c07-e900-425c-a577-5b4c5894379d Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/a8a78c07-e900-425c-a577-5b4c5894379d/jzCmXCx
This commit is contained in:
1 parent
22bdbff494
commit
7235be8b84
4 files changed
+91
-20
No files matched your search
+21
-11
@@ -34,18 +34,28 @@ ADD COLUMN IF NOT EXISTS created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
|||||||
|
|
||||||
## Débogage Production
|
## Débogage Production
|
||||||
|
|
||||||
### Script de Diagnostic SQL
|
### Problème "Aucun utilisateur trouvé"
|
||||||
Utilisez le script `debug-usergroups-production.sql` pour :
|
Si l'interface affiche "Aucun utilisateur trouvé" :
|
||||||
- Vérifier la structure de la table user_groups
|
|
||||||
- Examiner les données existantes
|
|
||||||
- Identifier les problèmes d'association utilisateur-groupe
|
|
||||||
|
|
||||||
### Logs de Débogage
|
1. **Vérification Base de Données** : Utilisez `production-users-debug.sql`
|
||||||
Les logs suivants sont maintenant disponibles :
|
```bash
|
||||||
- `🔍 getUserWithGroups called for user: [id]`
|
psql $DATABASE_URL -f production-users-debug.sql
|
||||||
- `🔍 Querying user_groups for user: [id]`
|
```
|
||||||
- `🔍 Found X group assignments for user [id]`
|
|
||||||
- `⚠️ Production mode: user_groups table missing created_at column, using raw SQL`
|
2. **Vérification API** : Testez l'endpoint directement
|
||||||
|
```bash
|
||||||
|
curl -H "Cookie: [votre-cookie-session]" https://votre-domaine.com/api/users
|
||||||
|
```
|
||||||
|
|
||||||
|
### Script de Diagnostic SQL
|
||||||
|
- `debug-usergroups-production.sql` : Problèmes d'association utilisateur-groupe
|
||||||
|
- `production-users-debug.sql` : Problème de récupération des utilisateurs
|
||||||
|
|
||||||
|
### Logs de Débogage Disponibles
|
||||||
|
- `🔍 GET /api/users - Fetching users with simplified approach`
|
||||||
|
- `📊 Found X base users`
|
||||||
|
- `❌ Error getting groups for user [username]:`
|
||||||
|
- `🔐 API /api/users - Returning: {length: X, totalGroups: Y}`
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 171 KiB |
@@ -0,0 +1,37 @@
|
|||||||
|
-- Script de diagnostic pour résoudre le problème "Aucun utilisateur trouvé" en production
|
||||||
|
|
||||||
|
-- 1. Vérifier si la table users existe et contient des données
|
||||||
|
SELECT 'Users table check' as diagnostic;
|
||||||
|
SELECT COUNT(*) as user_count FROM users;
|
||||||
|
SELECT id, username, email, role FROM users LIMIT 5;
|
||||||
|
|
||||||
|
-- 2. Vérifier la structure de la table users
|
||||||
|
SELECT 'Users table structure' as diagnostic;
|
||||||
|
\d users;
|
||||||
|
|
||||||
|
-- 3. Vérifier les connexions/permissions de base de données
|
||||||
|
SELECT 'Database info' as diagnostic;
|
||||||
|
SELECT current_database(), current_user, version();
|
||||||
|
|
||||||
|
-- 4. Vérifier la table groups
|
||||||
|
SELECT 'Groups table check' as diagnostic;
|
||||||
|
SELECT COUNT(*) as group_count FROM groups;
|
||||||
|
SELECT id, name FROM groups LIMIT 5;
|
||||||
|
|
||||||
|
-- 5. Vérifier la table user_groups et sa structure
|
||||||
|
SELECT 'User_groups table check' as diagnostic;
|
||||||
|
SELECT COUNT(*) as user_group_count FROM user_groups;
|
||||||
|
\d user_groups;
|
||||||
|
|
||||||
|
-- 6. Test de la requête utilisée par l'application
|
||||||
|
SELECT 'Full user query test' as diagnostic;
|
||||||
|
SELECT
|
||||||
|
u.id,
|
||||||
|
u.username,
|
||||||
|
u.email,
|
||||||
|
u.role,
|
||||||
|
COUNT(ug.group_id) as groups_count
|
||||||
|
FROM users u
|
||||||
|
LEFT JOIN user_groups ug ON u.id = ug.user_id
|
||||||
|
GROUP BY u.id, u.username, u.email, u.role
|
||||||
|
LIMIT 5;
|
||||||
+33
-9
@@ -862,20 +862,44 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
|||||||
return res.status(403).json({ message: "Access denied" });
|
return res.status(403).json({ message: "Access denied" });
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('🔍 GET /api/users - Fetching users with roles and groups');
|
console.log('🔍 GET /api/users - Fetching users with simplified approach');
|
||||||
// Get all users with groups for admin
|
|
||||||
const allUsers = await storage.getUsersWithRolesAndGroups();
|
// Get all basic users first
|
||||||
const safeUsers = Array.isArray(allUsers) ? allUsers : [];
|
const baseUsers = await storage.getUsers();
|
||||||
|
console.log(`📊 Found ${baseUsers.length} base users`);
|
||||||
|
|
||||||
|
// Add userGroups and userRoles to each user individually with error handling
|
||||||
|
const usersWithData = await Promise.all(
|
||||||
|
baseUsers.map(async (baseUser) => {
|
||||||
|
try {
|
||||||
|
const userWithGroups = await storage.getUserWithGroups(baseUser.id);
|
||||||
|
return {
|
||||||
|
...baseUser,
|
||||||
|
userGroups: userWithGroups?.userGroups || [],
|
||||||
|
userRoles: [] // Keep roles simple for now since we're using hardcoded permissions
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`❌ Error getting groups for user ${baseUser.username}:`, error);
|
||||||
|
// Return user with empty groups if there's an error
|
||||||
|
return {
|
||||||
|
...baseUser,
|
||||||
|
userGroups: [],
|
||||||
|
userRoles: []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
console.log('🔐 API /api/users - Returning:', {
|
console.log('🔐 API /api/users - Returning:', {
|
||||||
isArray: Array.isArray(safeUsers),
|
isArray: Array.isArray(usersWithData),
|
||||||
length: safeUsers.length,
|
length: usersWithData.length,
|
||||||
firstUserGroups: safeUsers.length > 0 ? safeUsers[0].userGroups?.length || 0 : 0
|
totalGroups: usersWithData.reduce((sum, u) => sum + (u.userGroups?.length || 0), 0)
|
||||||
});
|
});
|
||||||
|
|
||||||
res.json(safeUsers);
|
res.json(usersWithData);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching users:", error);
|
console.error("❌ Critical error fetching users:", error);
|
||||||
|
console.error("❌ Error stack:", error.stack);
|
||||||
// En cas d'erreur, retourner un array vide pour éviter React Error #310
|
// En cas d'erreur, retourner un array vide pour éviter React Error #310
|
||||||
res.status(500).json([]);
|
res.status(500).json([]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user