mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-17 20:27:10 +02:00
- Serveur Rust (server-rs/, axum + sqlx) : les 148 adresses de l'API, l'interface, les migrations de démarrage et les tâches de fond ; même comportement que Node (banc : 2027 cas, 0 écart hors écarts déclarés USERS-02, RAPPRO-21, R4, R5). - Node retiré : server/, dépendances serveur, image Docker sans Node (51 Mo), docker-compose à un seul service applicatif. - R4 : écritures d'un autre site refusées (Sec-Fetch-Site / Origin). - R5 : « aujourd'hui » et sauvegarde automatique à l'heure de Paris. - R6 : mainteneur dans .github/CODEOWNERS. - Menu latéral : Accueil puis Calendrier en tête. - Plan et état : docs/PLAN-MIGRATION-RUST.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ke2qyS8rgacP3ap5iezDbM
35 lines
1.6 KiB
TypeScript
35 lines
1.6 KiB
TypeScript
// Fonctions reprises de l'ancien serveur Node, pour écrire les données du banc
|
|
// comme il les aurait écrites (le serveur Node a été retiré du dépôt).
|
|
import crypto from "node:crypto";
|
|
|
|
const PREFIX = "enc:v1:";
|
|
|
|
/** Ancien server/crypto.ts : AES-256-GCM, clé = SHA-256(ENCRYPTION_KEY ou SESSION_SECRET) */
|
|
export function encryptSecret(value: string): string {
|
|
const secret = process.env.ENCRYPTION_KEY || process.env.SESSION_SECRET || "logiflow-fallback-secret-key";
|
|
const key = crypto.createHash("sha256").update(secret).digest();
|
|
const iv = crypto.randomBytes(12);
|
|
const cipher = crypto.createCipheriv("aes-256-gcm", key, iv);
|
|
const encrypted = Buffer.concat([cipher.update(value, "utf8"), cipher.final()]);
|
|
const tag = cipher.getAuthTag();
|
|
return `${PREFIX}${iv.toString("base64")}:${tag.toString("base64")}:${encrypted.toString("base64")}`;
|
|
}
|
|
|
|
/**
|
|
* Ancien weatherService.getPreviousYearDate, serveur en UTC : même jour de la
|
|
* semaine, même rang dans le mois, l'année précédente
|
|
*/
|
|
export function previousYearDate(date: Date): string {
|
|
const year = date.getUTCFullYear();
|
|
const month = date.getUTCMonth();
|
|
const dayOfWeek = date.getUTCDay();
|
|
const firstDayOfMonth = new Date(Date.UTC(year - 1, month, 1)).getUTCDay();
|
|
const daysToAdd = (dayOfWeek - firstDayOfMonth + 7) % 7;
|
|
const weekOfMonth = Math.ceil(date.getUTCDate() / 7);
|
|
const target = new Date(Date.UTC(year - 1, month, 1 + daysToAdd + (weekOfMonth - 1) * 7));
|
|
if (target.getUTCMonth() !== month) {
|
|
target.setUTCDate(target.getUTCDate() - 7);
|
|
}
|
|
return target.toISOString().split("T")[0];
|
|
}
|