<?php
/**
 * ASISMA CRM - Migracion: tabla de tokens de recuperacion de contrasena
 *
 * Guarda el HASH del token (no el token en claro), su vencimiento y si ya se
 * uso. El token en claro solo viaja en el enlace del correo. Un usuario puede
 * tener a lo mas un token vigente: al pedir otro se invalidan los anteriores.
 *
 * Correr una vez: C:\wamp\bin\php\php5.5.12\php.exe database\migracion_password_resets.php
 */
$env = include dirname(__FILE__) . '/../.env.php';
$pdo = new PDO(
    'mysql:host=127.0.0.1;dbname=asisma_crm;charset=utf8mb4',
    $env['DB_USER'], $env['DB_PASS'],
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);

$existe = (int)$pdo->query(
    "SELECT COUNT(*) FROM information_schema.TABLES
     WHERE TABLE_SCHEMA = 'asisma_crm' AND TABLE_NAME = 'password_resets'"
)->fetchColumn();

if ($existe > 0) {
    echo "Sin cambios (la tabla password_resets ya existe).\n";
} else {
    $pdo->exec("CREATE TABLE password_resets (
        id INT NOT NULL AUTO_INCREMENT,
        usuario_id INT NOT NULL,
        email VARCHAR(191) NOT NULL,
        token_hash CHAR(64) NOT NULL COMMENT 'SHA-256 del token que viaja en el enlace',
        expira_at DATETIME NOT NULL,
        usado_at DATETIME NULL,
        ip VARCHAR(45) NULL,
        created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        KEY idx_token_hash (token_hash),
        KEY idx_usuario (usuario_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
    echo "Migrado: tabla password_resets creada.\n";
}
