mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-19 05:06:56 +02:00
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
22 lines
898 B
TypeScript
22 lines
898 B
TypeScript
import type { Metadata } from "next";
|
|
import { redirect } from "next/navigation";
|
|
import { verifierAdmin } from "@/lib/authz";
|
|
import { ParametresClient } from "./client";
|
|
|
|
export const metadata: Metadata = { title: "Paramètres" };
|
|
|
|
/**
|
|
* Paramètres (administrateurs) : connexions aux sources de données, comptes
|
|
* utilisateurs, accès à l'API et journal serveur, rangés en onglets.
|
|
*
|
|
* Composant serveur minimal : il lit l'onglet demandé (`?onglet=`) pour que le
|
|
* lien se partage et survive au rechargement, puis rend la page cliente.
|
|
*/
|
|
export default async function SettingsPage(props: { searchParams: Promise<{ onglet?: string }> }) {
|
|
// Le middleware filtre déjà sur le rôle du jeton ; ici, rôle relu en base.
|
|
if (!(await verifierAdmin()).ok) redirect("/dashboard");
|
|
|
|
const { onglet } = await props.searchParams;
|
|
return <ParametresClient onglet={onglet} />;
|
|
}
|