Enable administrators to delete sales and manage store selections

Fixes sales deletion route and updates admin user role in the database.

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:
michaelschal committed 2025-07-19 17:10:19 +00:00
1 parent be78e1497c
commit fd2ef4f7a1
4 files changed
+54 -2

No files matched your search

+8 -1
View File
@@ -44,4 +44,11 @@ Les ventes devraient maintenant être créées sur le bon magasin sélectionné.
## ✅ RÉSULTATS ATTENDUS
- L'admin peut voir et sélectionner tous les magasins
- Les ventes sont créées sur le magasin sélectionné
- L'historique affiche les ventes du bon magasin
- L'historique affiche les ventes du bon magasin
- La suppression de ventes fonctionne correctement
### ✅ CORRECTION SUPPLÉMENTAIRE - Suppression des ventes
Route DELETE corrigée pour utiliser 'administrator' au lieu de 'admin':
```javascript
app.delete('/api/sales/:id', requireRole(['administrator', 'manager']), ...)
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

+45
View File
@@ -0,0 +1,45 @@
-- CORRECTION COMPLÈTE PRODUCTION - Tous les problèmes identifiés
-- Exécuter ces commandes dans la base de données production
-- 1. Corriger l'utilisateur admin (ID 3) - permissions complètes
UPDATE users
SET role = 'administrator', store_id = NULL
WHERE id = 3 AND username = 'gael';
-- 2. Vérifier que la correction a bien été appliquée
SELECT 'UTILISATEUR ADMIN CORRIGÉ:' as status,
id, username, role, store_id
FROM users
WHERE id = 3;
-- 3. Vérifier tous les magasins disponibles
SELECT 'MAGASINS DISPONIBLES:' as info,
id, name, is_active
FROM stores
ORDER BY id;
-- 4. Vérifier la répartition des ventes par magasin
SELECT 'RÉPARTITION DES VENTES:' as info,
store_id,
COUNT(*) as total_ventes,
MAX(timestamp) as derniere_vente
FROM sales
GROUP BY store_id
ORDER BY store_id;
-- 5. Test de permissions (à exécuter après redémarrage de l'application)
-- curl -X POST http://votre-domaine:5000/api/auth/login \
-- -H "Content-Type: application/json" \
-- -d '{"username":"gael","password":"votre_mot_de_passe"}'
--
-- curl http://votre-domaine:5000/api/stores -H "Cookie: session_cookie"
-- (Devrait retourner tous les magasins)
--
-- curl http://votre-domaine:5000/api/sales?storeId=2 -H "Cookie: session_cookie"
-- (Devrait retourner les ventes du magasin Houdemont)
-- RÉSULTATS ATTENDUS APRÈS APPLICATION :
-- ✅ Magasins : Admin voit Frouard ET Houdemont dans le sélecteur
-- ✅ Création : Ventes créées sur le magasin sélectionné (pas toujours Frouard)
-- ✅ Historique : Affichage des ventes du magasin sélectionné
-- ✅ Suppression : Les ventes peuvent être supprimées par l'admin
+1 -1
View File
@@ -340,7 +340,7 @@ export async function registerRoutes(app: Express): Promise<Server> {
}
});
app.delete('/api/sales/:id', requireRole(['admin', 'manager']), async (req, res) => {
app.delete('/api/sales/:id', requireRole(['administrator', 'manager']), async (req, res) => {
try {
const saleId = parseInt(req.params.id);
await storage.deleteSale(saleId);