27 lines
1.0 KiB
PHP
27 lines
1.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Migration 005 — Création de la table de réinitialisation de mot de passe.
|
|
*
|
|
* token_hash : hash SHA-256 du token envoyé par email — le token brut
|
|
* n'est jamais stocké en base pour limiter l'impact d'une fuite.
|
|
* expires_at : timestamp d'expiration (1 heure après création).
|
|
* used_at : timestamp de consommation — le token est invalidé après usage
|
|
* sans être supprimé immédiatement (traçabilité).
|
|
* user_id : CASCADE — supprime les tokens si l'utilisateur est supprimé.
|
|
*/
|
|
return [
|
|
'up' => "
|
|
CREATE TABLE IF NOT EXISTS password_resets (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
token_hash TEXT NOT NULL UNIQUE,
|
|
expires_at DATETIME NOT NULL,
|
|
used_at DATETIME DEFAULT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
",
|
|
|
|
'down' => 'DROP TABLE IF EXISTS password_resets',
|
|
];
|