Checkpoint: Ajout d'une page de paramètres pour gérer l'URL des QR codes

Modifications apportées :
- Création de la table parametres dans la base de données
- Création du fichier server/parametresDb.ts avec les fonctions getParametres et updateUrlPublique
- Ajout du router parametres dans server/routers.ts avec les procédures get et updateUrlPublique
- Création de la page client/src/pages/AdminParametres.tsx avec formulaire de modification
- Ajout de la route /admin/parametres dans App.tsx
- Ajout du lien "Paramètres" dans le menu après "Configuration SMTP" dans DashboardLayout
- Modification de server/qrCodeGenerator.ts pour utiliser l'URL de la BDD au lieu de getAppBaseUrl
- URL par défaut définie : https://formations.itinova.org

Fonctionnalités :
- Interface graphique pour modifier l'URL publique de l'application
- Les QR codes d'émargement utilisent maintenant l'URL configurée dans la base de données
- Validation de l'URL avant enregistrement
- Message d'information sur l'impact des modifications
This commit is contained in:
Manus
2026-01-12 02:24:59 -05:00
parent 3922b8fd5b
commit 0bebe04eea
12 changed files with 2493 additions and 5 deletions

42
server/parametresDb.ts Normal file
View File

@@ -0,0 +1,42 @@
import { eq } from "drizzle-orm";
import { getDb } from "./db";
import { parametres } from "../drizzle/schema";
/**
* Récupérer les paramètres de l'application
* S'il n'y a pas de paramètres, en créer un avec les valeurs par défaut
*/
export async function getParametres() {
const db = await getDb();
if (!db) throw new Error("Database not available");
const result = await db.select().from(parametres).limit(1);
if (result.length === 0) {
// Créer les paramètres par défaut
await db.insert(parametres).values({
urlPublique: "https://formations.itinova.org",
});
const newResult = await db.select().from(parametres).limit(1);
return newResult[0];
}
return result[0];
}
/**
* Mettre à jour l'URL publique
*/
export async function updateUrlPublique(urlPublique: string) {
const db = await getDb();
if (!db) throw new Error("Database not available");
const params = await getParametres();
await db.update(parametres)
.set({ urlPublique })
.where(eq(parametres.id, params.id));
return getParametres();
}