Files
slim-blog/database/migrations/007_create_login_attempts.php
2026-03-16 01:47:07 +01:00

28 lines
861 B
PHP

<?php
/**
* Migration 007 — Table de protection contre le brute-force.
*
* Stocke les tentatives de connexion échouées par adresse IP.
* Le champ `locked_until` est NULL tant que le seuil n'est pas atteint,
* puis contient la date/heure ISO 8601 de fin de verrouillage.
*
* Le nettoyage des entrées expirées est effectué par LoginAttemptRepository
* à chaque tentative pour éviter l'accumulation de lignes obsolètes,
* sans nécessiter de tâche planifiée.
*/
return [
'up' => "
CREATE TABLE IF NOT EXISTS login_attempts (
ip TEXT NOT NULL PRIMARY KEY,
attempts INTEGER NOT NULL DEFAULT 0,
locked_until TEXT DEFAULT NULL,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
",
'down' => "
DROP TABLE IF EXISTS login_attempts;
",
];