Fix production error related to missing user group creation date

Address the 'column user_groups.created_at does not exist' error in production by adjusting the getUserWithGroups query and ensuring admin authentication is functional.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 54292eb6-296c-47a3-8f4e-c9967863556c
Replit-Commit-Checkpoint-Type: full_checkpoint
This commit is contained in:
michaelschal committed 2025-08-11 15:56:52 +00:00
1 parent a6efc91d14
commit 8256d0b965
3 files changed
+183 -2

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
# Fix de Production - LogiFlow
## Problème résolu
- ❌ Erreur `column user_groups.created_at does not exist` lors de getUserWithGroups
- ✅ Authentification admin fonctionne (admin/admin)
- ✅ Code corrigé et compilé avec succès
## Action requise
**REDÉPLOYER l'application** pour utiliser la nouvelle version compilée qui contient les corrections.
## Vérifications post-déploiement
1. Connexion admin/admin doit fonctionner
2. Plus d'erreur `user_groups.created_at` dans les logs
3. L'API `/api/user` doit fonctionner après connexion
## Corrections incluses
- getUserWithGroups() utilise maintenant des requêtes jointes manuelles
- Système d'authentification robuste avec support multi-format
- Endpoint d'urgence pour reset admin si nécessaire
@@ -0,0 +1,158 @@
Administration
User-related
Environment-related
Registries
Logs
Notifications
Settings
New version available 2.27.9
DismissSee what's new
Community Edition
2.27.6 LTS
Containers>logiflow-logiflow-1>Logs
Container logs
admin
Log viewer settings
Auto-refresh logs
Wrap lines
Display timestamps
Fetch
All logs
Search
Filter...
Lines
100
Actions
🔗 Database initialization: {
NODE_ENV: 'production',
isProduction: true,
hasDbUrl: true,
dbHost: 'logiflow-db'
}
🐳 PRODUCTION: Using standard PostgreSQL
✅ PostgreSQL connection test successful
🐳 PRODUCTION: Using PostgreSQL storage
🐳 PRODUCTION: Local auth configured with PostgreSQL sessions
🐳 PRODUCTION: Starting LogiFlow application
🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' }
🐳 Serving static files from: /app/dist/public
🐳 PRODUCTION: LogiFlow serving on port 3000
✅ Production admin user found: { id: 'admin_local', username: 'admin', passwordFormat: 'present' }
🔐 Production password comparison { suppliedLength: 5, storedFormat: '21ff482668...' }
✅ Password matched with hash.salt format
✅ Admin password works with current system
HEAD /api/health 200 in 5ms
GET /api/user 401 in 24ms
🔐 Production password comparison { suppliedLength: 9, storedFormat: '21ff482668...' }
❌ No password format matched
POST /api/login 400 in 60ms
🔐 Production password comparison { suppliedLength: 5, storedFormat: '21ff482668...' }
✅ Password matched with hash.salt format
POST /api/login 200 in 69ms
Server error: {
status: 500,
message: 'column user_groups.created_at does not exist',
error: error: column user_groups.created_at does not exist
at /app/node_modules/pg-pool/index.js:45:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22
at async DatabaseStorage.getUserWithGroups (file:///app/dist/index.js:1364:28)
at async file:///app/dist/index.js:3046:20 {
length: 120,
severity: 'ERROR',
code: '42703',
detail: undefined,
hint: undefined,
position: '59',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_relation.c',
line: '3665',
routine: 'errorMissingColumn'
}
}
error: column user_groups.created_at does not exist
at /app/node_modules/pg-pool/index.js:45:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22
at async DatabaseStorage.getUserWithGroups (file:///app/dist/index.js:1364:28)
at async file:///app/dist/index.js:3046:20
+6 -2
View File
@@ -1999,9 +1999,13 @@ class MemStorage implements IStorage {
async deletePermission(): Promise<void> {}
async getRolePermissions(): Promise<any[]> { return []; }
async setRolePermissions(): Promise<void> {}
async getUserRoles(): Promise<any[]> { return []; }
async setUserRoles(): Promise<void> {}
async getUserPermissions(): Promise<any[]> { return []; }
async assignUserToGroup(userGroup: { groupId: number; userId: string; }): Promise<{ createdAt: Date | null; groupId: number; userId: string; }> {
return { ...userGroup, createdAt: new Date() };
}
async removeUserFromGroup(): Promise<void> {}
async getMonthlyStats(): Promise<any> { return {}; }
async getNocodbConfigs(): Promise<any[]> { return []; }
}
// Use MemStorage in development, DatabaseStorage in production