From 461290a4f804bf68b992bb41712ab84e0af887f6 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 08:18:45 +0000 Subject: [PATCH] Allow admin password to be changed and retained without resets Modify production logic to prevent forced admin password resets on updates, allowing users to set and keep their own passwords unless explicitly overridden by an environment variable. 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/kdCs97W --- ...min-local--1754986712301_1754986712302.txt | 199 ++++++++++++++++++ server/localAuth.production.ts | 33 ++- 2 files changed, 215 insertions(+), 17 deletions(-) create mode 100644 attached_assets/Pasted--Processed-0-groups-for-user-admin-local-Found-0-group-assignments-for-user-admin-local--1754986712301_1754986712302.txt diff --git a/attached_assets/Pasted--Processed-0-groups-for-user-admin-local-Found-0-group-assignments-for-user-admin-local--1754986712301_1754986712302.txt b/attached_assets/Pasted--Processed-0-groups-for-user-admin-local-Found-0-group-assignments-for-user-admin-local--1754986712301_1754986712302.txt new file mode 100644 index 0000000..e9188bb --- /dev/null +++ b/attached_assets/Pasted--Processed-0-groups-for-user-admin-local-Found-0-group-assignments-for-user-admin-local--1754986712301_1754986712302.txt @@ -0,0 +1,199 @@ +βœ… Processed 0 groups for user admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +Orders API called with: { + + startDate: undefined, + + endDate: undefined, + + storeId: undefined, + + userRole: 'admin' + +} + +Admin filtering with groupIds: undefined + +Fetching all orders + +GET /api/publicities 304 in 143ms + +GET /api/user 304 in 37ms + +Deliveries returned: 80 items + +Customer orders returned from storage: 32 items + +GET /api/deliveries 200 in 182ms + +Orders returned: 46 items + +GET /api/customer-orders 200 in 177ms + +GET /api/tasks 200 in 162ms + +GET /api/orders 200 in 191ms + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +GET /api/dlc-products/stats 200 in 180ms + +πŸ” Querying user_groups for user: admin_local + +GET /api/user 304 in 7ms + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getPublicities called with: { year: 2025, groupIds: undefined } + +πŸ“’ Raw publicities found: 29 + +πŸͺ Participations found: 26 + +βœ… Final publicities with participations: 29 + +πŸ“„ Sample publicity: { + + + +, + + pubNumber: '2526', + + participations: [ { groupId: 2, groupName: 'Houdemont' } ] + +} + +GET /api/publicities 200 in 47ms + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +GET /api/groups 200 in 8ms + +HEAD /api/health 200 in 1ms + +HEAD /api/health 200 in 0ms + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +GET /api/user 304 in 33ms + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” getUserWithGroups called for user: admin_local + +πŸ” Querying user_groups for user: admin_local + +πŸ” Found 0 group assignments for user admin_local + +πŸ” Raw query result: [] + +βœ… Processed 0 groups for user admin_local + +πŸ” ===== DΓ‰BUT SCAN SCHΓ‰MA BASE DE DONNΓ‰ES ===== + +⏰ Timestamp: 2025-08-12T08:18:10.753Z + +❌ ERREUR lors du scan du schΓ©ma: TypeError: Cannot read properties of undefined (reading 'query') + + at file:///app/dist/index.js:4455:45 + + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + +GET /api/debug/log-schema 500 in 16ms + +HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/server/localAuth.production.ts b/server/localAuth.production.ts index 786eef6..01acd25 100644 --- a/server/localAuth.production.ts +++ b/server/localAuth.production.ts @@ -110,23 +110,22 @@ async function createDefaultAdminUser() { passwordFormat: existingAdmin.password ? 'present' : 'missing' }); - // Test if current password works with 'admin' - if (existingAdmin.password) { - const testLogin = await comparePasswords('admin', existingAdmin.password); - if (!testLogin) { - console.log('πŸ”„ Admin password incompatible with current system, forcing reset...'); - try { - const newHashedPassword = await hashPassword('admin'); - await storage.updateUser(existingAdmin.id, { - password: newHashedPassword, - passwordChanged: false - }); - console.log('βœ… Admin password force-reset to: admin/admin'); - } catch (error) { - console.error('❌ Failed to reset admin password:', (error as Error).message); - } - } else { - console.log('βœ… Admin password works with current system'); + // Ne plus forcer la rΓ©initialisation du mot de passe admin + // L'admin peut maintenant changer son mot de passe et il sera conservΓ© + console.log('βœ… Admin user exists, preserving current password'); + + // Seulement rΓ©initialiser si explicitement demandΓ© via FORCE_ADMIN_RESET + if (process.env.FORCE_ADMIN_RESET === 'true') { + console.log('πŸ”„ FORCE_ADMIN_RESET env var set, resetting admin password...'); + try { + const newHashedPassword = await hashPassword('admin'); + await storage.updateUser(existingAdmin.id, { + password: newHashedPassword, + passwordChanged: false + }); + console.log('βœ… Admin password manually reset to: admin/admin'); + } catch (error) { + console.error('❌ Failed to reset admin password:', (error as Error).message); } } }