- lab_domicilios.php: sidebar filtrado por hasModule()
- lab_ordenes.php: sidebar filtrado por hasModule()
- login.php: redirige a lab_domicilios.php si módulos son [lab_domicilios, lab_ordenes]
- migration: elimina lab_dashboard y lab_pacientes del rol lab_readonly
- DB producción: rol lab_readonly queda con lab_domicilios(read) + lab_ordenes(read)
- login.php: redirige a lab_formularios.php si el único módulo es lab_formularios
- lab_formularios.php: sidebar filtra links por hasModule() según el rol
- migration: permiso write en lab_formularios para formularios_readonly
- DB: eliminado lab_dashboard de formularios_readonly (solo lectura de resultados)
20260304_roles_seed_data.sql — inicializa datos en roles/role_modules
y vincula admin_users.role_id. Todos los statements son idempotentes
(UPDATE + INSERT IGNORE), por lo que se pueden re-ejecutar sin problemas.
Esto asegura que en cualquier deploy los módulos de rol y los colores
estén correctos, aunque la migración DDL ya haya sido registrada.