28 lines
861 B
PHP
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;
|
|
",
|
|
];
|