Files
whatsapp/migrations/001_rbac_expandido.sql
Lizandro GuarnizoandClaude Sonnet 4.6 1342d305ec fix: corregir migraciones fallidas, redis doble carga y cache de assets
- Eliminar .env del tracking de git (credenciales no deben ir en repo)
- Agregar .env y .env.* al .dockerignore (no hornear credenciales en imagen)
- Quitar extension=redis.so duplicada en php.ini
- Activar cache 7d para assets estáticos en nginx
- Corregir 5 migraciones: eliminar INSERT INTO migrations con columna incorrecta
  y remover semicolons en comentarios -- que partian el parser SQL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 19:24:41 -05:00

25 lines
1.4 KiB
SQL

-- =============================================================================
-- Migración 001 — RBAC expandido
-- Agrega columnas de permisos granulares a role_modules.
-- Proyecto: WhatsApp ERP Multi-módulo
-- Fecha: 2026-04-16
-- IMPORTANTE: Migración ADITIVA. No elimina ni renombra columnas existentes.
-- =============================================================================
-- Ampliar table role_modules con permisos por acción
ALTER TABLE role_modules
ADD COLUMN IF NOT EXISTS can_view TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Puede ver el módulo',
ADD COLUMN IF NOT EXISTS can_create TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Puede crear registros',
ADD COLUMN IF NOT EXISTS can_edit TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Puede editar registros',
ADD COLUMN IF NOT EXISTS can_delete TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Puede eliminar registros',
ADD COLUMN IF NOT EXISTS can_export TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Puede exportar datos',
ADD COLUMN IF NOT EXISTS extra_json JSON NULL COMMENT 'Permisos extras específicos del módulo (JSON)';
-- Retrocompatibilidad: los registros existentes con permission='write' reciben can_create/edit/delete = 1
UPDATE role_modules
SET can_create = 1, can_edit = 1, can_delete = 1, can_export = 1
WHERE permission = 'write' OR permission IS NULL;
-- Los que tienen permission='read' solo tienen can_view = 1 (ya es el DEFAULT, no tocar)