Création de la feature API V1

This commit is contained in:
2026-07-14 16:22:34 +02:00
parent f9c5316303
commit c843464ccd
14 changed files with 1263 additions and 0 deletions
+25
View File
@@ -2254,4 +2254,29 @@ db.exec('CREATE INDEX IF NOT EXISTS idx_objectifs_investisseur ON objectifs(inve
}
}
// ── Migration : table api_keys ───────────────────────────────────────────
// Clés API générées par l'utilisateur pour un accès programmatique/MCP.
// Chaque clé est scopée à un investisseur précis (usage single-user
// multi-investisseur — pas de notion multi-tenant ici). Seul le hash SHA-256
// est stocké ; la valeur en clair n'est montrée qu'une fois à la création.
// `key_prefix` (8 premiers caractères) permet d'identifier une clé dans
// l'UI sans jamais réafficher la valeur complète.
db.exec(`
CREATE TABLE IF NOT EXISTS api_keys (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
investisseur_id INTEGER NOT NULL REFERENCES investisseurs(id) ON DELETE CASCADE,
nom TEXT NOT NULL,
key_prefix TEXT NOT NULL,
key_hash TEXT NOT NULL UNIQUE,
scopes TEXT NOT NULL DEFAULT 'read',
created_at TEXT NOT NULL DEFAULT (datetime('now')),
last_used_at TEXT,
revoked_at TEXT
)
`);
db.exec('CREATE INDEX IF NOT EXISTS idx_api_keys_user ON api_keys(user_id)');
db.exec('CREATE INDEX IF NOT EXISTS idx_api_keys_inv ON api_keys(investisseur_id)');
db.exec('CREATE INDEX IF NOT EXISTS idx_api_keys_hash ON api_keys(key_hash)');
export default db;