-- Acceso por modulo y por usuario (fase 2). Sin fila = modulo habilitado (comportamiento previo); -- el superadmin guarda aqui las excepciones. Lo gestiona solo superadmin. Idempotente. CREATE TABLE IF NOT EXISTS user_modules ( user_id INT NOT NULL, module VARCHAR(40) NOT NULL, enabled TINYINT(1) NOT NULL DEFAULT 1, updated_by INT NULL, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (user_id, module), CONSTRAINT fk_user_modules_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, CONSTRAINT fk_user_modules_updater FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;