mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-11 17:26:32 +02:00
Lot 5 : changement de magasin instantané et contrôle des droits
Grille - Corrige le lot 4 : au changement de magasin, les chiffres et le tri affichés suivent tout de suite (nouvelle liste), la sélection est gardée. - Lignes toujours chargées « Nos 2 magasins » ; changement de magasin sans aller-retour serveur (URL mise à jour par l'historique du navigateur). - Complément de l'API FF par magasin servi à part (/api/grid/rows/store-patch), appliqué à son arrivée, calcul identique à l'ancien (lib/store-patch.ts). - La recherche ne reconstruit plus toutes les lignes à chaque frappe ; la sélection n'est remise à zéro qu'au changement de fournisseur. Sécurité - lib/authz.ts : session relue en base (cache 1 min), rôle de la base prioritaire ; variantes pour actions, routes et pages. - Paramètres réservés aux administrateurs ; session vérifiée dans les actions Grille, Commandes, Historique et les routes ; diagnostics réservés admin. - Mots de passe et clés d'IA plus envoyés au navigateur ; champ vide = mot de passe conservé ; plus de mot de passe dans le localStorage ; l'enregistrement de la base n'efface plus les clés d'IA. - admin/admin créé seulement si aucun utilisateur ; fichier de secours utilisé uniquement si la base est injoignable ; data/ ignoré par git. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AcA129WzGTH6zxPHFBGWmn
This commit is contained in:
44 files changed
+1155
-531
No files matched your search
@@ -376,3 +376,36 @@ Autres changements :
|
||||
- Première ouverture d'un gros fournisseur après la synchro de la nuit : elle doit être quasi immédiate.
|
||||
- Changement de magasin : la Grille reste affichée, puis les chiffres se mettent à jour.
|
||||
- Enregistrer, quitter la Grille, puis y revenir : les gammes enregistrées sont bien là.
|
||||
|
||||
## Suivi — Lot 5 réalisé (correctif Grille et sécurité)
|
||||
|
||||
**Grille : changement de magasin**
|
||||
- **Corrige une régression du lot 4** : les lignes déjà affichées gardaient les chiffres de l'ancien magasin, et un tri actif n'était pas réappliqué, jusqu'à la fin du rechargement. Désormais, la liste est reconstruite à chaque changement de magasin : les chiffres et le tri sont justes tout de suite, et la sélection est conservée.
|
||||
- **Plus d'aller-retour serveur** : la Grille charge toujours « Nos 2 magasins », dont les lignes portent déjà le détail de chaque magasin. Changer de magasin met seulement à jour l'URL, qui reste partageable.
|
||||
- **Complément de l'API FF demandé à part** (`/api/grid/rows/store-patch`) et appliqué à son arrivée. Il couvre les articles sans vente SQL dans le magasin, comme avant.
|
||||
- Le calcul est identique à l'ancien : comparaison automatique sur un jeu d'essai.
|
||||
- Il ne modifie que les chiffres du magasin, pas les totaux « Nos 2 magasins ».
|
||||
- Il n'est demandé qu'une fois par magasin et par chargement.
|
||||
- **Sélection** : remise à zéro seulement au changement de fournisseur.
|
||||
- **La recherche ne reconstruit plus toutes les lignes** à chaque frappe.
|
||||
|
||||
**Sécurité**
|
||||
- **Contrôle commun `lib/authz.ts`** :
|
||||
- le compte est relu en base, avec un cache d'une minute ; un compte supprimé ou rétrogradé perd ses droits sans attendre l'expiration de sa session ;
|
||||
- si la base est injoignable, le jeton de session fait foi.
|
||||
- **Paramètres** : actions réservées aux administrateurs, avec la même vérification sur les pages Paramètres et Synchronisation.
|
||||
- **Toutes les autres actions et routes vérifient la session** : Grille, Commandes, Historique, exports, statut FF.
|
||||
- **Routes de diagnostic** (`/api/diag*`, `/api/test-db`) : réservées aux administrateurs, sans trace d'erreur technique.
|
||||
- **Mots de passe et clés d'IA** :
|
||||
- ils ne sont plus envoyés au navigateur ; un champ laissé vide garde le mot de passe enregistré ;
|
||||
- le mot de passe PostgreSQL n'est plus conservé dans le `localStorage`, et l'ancien est effacé ;
|
||||
- enregistrer la connexion PostgreSQL n'efface plus les clés d'IA.
|
||||
- **Compte admin/admin** :
|
||||
- il n'est créé qu'au premier démarrage (aucun utilisateur en base) ;
|
||||
- le fichier de secours `data/users.json` ne sert que si la base est injoignable ;
|
||||
- `data/` est ignoré par git.
|
||||
|
||||
**À savoir après la mise en ligne**
|
||||
- Un utilisateur promu administrateur doit se reconnecter pour accéder à Paramètres.
|
||||
- Après avoir configuré la base depuis le compte de secours, il faut se reconnecter.
|
||||
- Un mot de passe enregistré ne peut plus être effacé depuis l'écran ; seul son remplacement est possible.
|
||||
Reference in new issue
Block a user