Files
whatsapp/migrations/20260401_readonly_roles.sql

40 lines
2.3 KiB
SQL

-- ============================================================
-- 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');