From 46de48f4595a95952e52d2bf1652426f58cfa036 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 20 Aug 2025 08:46:04 +0000 Subject: [PATCH] Make sure directors and managers see correct store data Fixes an issue where directors and managers might see data from multiple stores incorrectly. Ensures roles with limited store access only view their designated information and prompts explicit store selection when no store is chosen. Updates the UI to correctly display store selectors based on user roles. Also adds cache invalidation for user data upon authentication updates and refines API filtering for orders and deliveries to respect user roles and store selections. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 15f19c36-9aac-46a4-a181-3dc5f496fabd Replit-Commit-Checkpoint-Type: full_checkpoint --- client/src/components/Layout.tsx | 41 +++++++--- client/src/hooks/useAuthUnified.ts | 3 +- replit.md | 2 +- server/routes.ts | 115 ++++++++++++++++++++++++++--- 4 files changed, 135 insertions(+), 26 deletions(-) diff --git a/client/src/components/Layout.tsx b/client/src/components/Layout.tsx index c58f462..a96fd2a 100644 --- a/client/src/components/Layout.tsx +++ b/client/src/components/Layout.tsx @@ -82,10 +82,20 @@ export default function Layout({ children }: LayoutProps) { } } + // IMPORTANT FIX: Pour les rôles directeur/manager, forcer la sélection d'un magasin spécifique + // si aucun n'est sélectionné et qu'ils n'ont accès qu'à un seul magasin + if ((user.role === 'directeur' || user.role === 'manager') && !selectedStoreId && stores.length === 1) { + console.log('🏪 Auto-selecting single available store for directeur/manager:', stores[0].id); + const singleStoreId = stores[0].id; + setSelectedStoreId(singleStoreId); + localStorage.setItem('selectedStoreId', singleStoreId.toString()); + } + console.log('🏪 Store initialization complete:', { user: user.role, selectedStoreId, - storesCount: stores.length + storesCount: stores.length, + autoSelected: (user.role === 'directeur' || user.role === 'manager') && !selectedStoreId && stores.length === 1 }); setStoreInitialized(true); } @@ -131,14 +141,18 @@ export default function Layout({ children }: LayoutProps) { - {/* Store selector for admin - responsive */} - {user?.role === 'admin' && stores.length > 0 && ( + {/* Store selector for admin, directeur, and manager - responsive */} + {user && (user.role === 'admin' || user.role === 'directeur' || user.role === 'manager') && stores.length > 0 && (