-- ============================================================ -- Migración: Roles de solo lectura para Formularios y Lab -- Descripción: Agrega columna 'permission' a role_modules, -- crea roles de lectura y sus asignaciones de módulos. -- ============================================================ -- ── 1. Agregar columna permission a role_modules (si no existe) ───────────── ALTER TABLE `role_modules` ADD COLUMN IF NOT EXISTS `permission` ENUM('read','write') NOT NULL DEFAULT 'write' COMMENT 'Nivel de acceso al módulo: read = solo lectura, write = lectura y escritura'; -- ── 2. Nuevos roles de solo lectura ──────────────────────────────────────── INSERT IGNORE INTO `roles` (`name`, `slug`, `description`, `color`, `is_system`) VALUES ('Formularios (Lectura)', 'formularios_readonly', 'Ver y enviar formularios. Sin crear ni editar plantillas.', '#17a2b8', 0), ('Lab Solo Lectura', 'lab_readonly', 'Ver órdenes y domicilios. Sin crear, editar ni eliminar.', '#6c757d', 0); -- ── 3. Módulos para rol Formularios (Lectura) ─────────────────────────────── INSERT IGNORE INTO `role_modules` (`role_id`, `module_slug`, `permission`) SELECT r.id, 'lab_formularios', 'read' FROM `roles` r WHERE r.slug = 'formularios_readonly'; -- ── 4. Módulos para rol Lab Solo Lectura ──────────────────────────────────── INSERT IGNORE INTO `role_modules` (`role_id`, `module_slug`, `permission`) SELECT r.id, 'lab_ordenes', 'read' FROM `roles` r WHERE r.slug = 'lab_readonly'; INSERT IGNORE INTO `role_modules` (`role_id`, `module_slug`, `permission`) SELECT r.id, 'lab_domicilios', 'read' FROM `roles` r WHERE r.slug = 'lab_readonly'; INSERT IGNORE INTO `role_modules` (`role_id`, `module_slug`, `permission`) SELECT r.id, 'lab_pacientes', 'read' FROM `roles` r WHERE r.slug = 'lab_readonly'; -- ── 5. También asignar acceso al dashboard a ambos roles nuevos ───────────── INSERT IGNORE INTO `role_modules` (`role_id`, `module_slug`, `permission`) SELECT r.id, 'lab_dashboard', 'read' FROM `roles` r WHERE r.slug IN ('formularios_readonly', 'lab_readonly');