40 lines
2.3 KiB
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');
|