<?php
/**
 * ASISMA CRM - Migracion: sesiones "Recordar dispositivo" (remember me)
 *
 * Patron selector + validator (login persistente seguro):
 *  - selector: identificador PUBLICO (va en la cookie, se busca por indice unico)
 *  - validator_hash: SHA-256 del secreto que va en la cookie (nunca se guarda el
 *    secreto en claro). Cookie = "selector:validator".
 * La sesion dura 30 dias, es por dispositivo, y se borra al cerrar sesion.
 *
 * Correr una vez: C:\wamp\bin\php\php5.5.12\php.exe database\migracion_sesiones_recordadas.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 = 'sesiones_recordadas'"
)->fetchColumn();

if ($existe > 0) {
    echo "Sin cambios (la tabla sesiones_recordadas ya existe).\n";
} else {
    $pdo->exec("CREATE TABLE sesiones_recordadas (
        id INT NOT NULL AUTO_INCREMENT,
        usuario_id INT NOT NULL,
        selector CHAR(24) NOT NULL COMMENT 'ID publico que viaja en la cookie',
        validator_hash CHAR(64) NOT NULL COMMENT 'SHA-256 del secreto de la cookie',
        expira_at DATETIME NOT NULL,
        user_agent VARCHAR(255) NULL,
        ip VARCHAR(45) NULL,
        ultimo_uso_at DATETIME NULL,
        created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        UNIQUE KEY uq_selector (selector),
        KEY idx_usuario (usuario_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
    echo "Migrado: tabla sesiones_recordadas creada.\n";
}
