Activación por empresa
Cada empresa puede activar o desactivar plugins independientemente.
Desde la interfaz
Sección titulada «Desde la interfaz»Menu lateral → Plugins → toggle para cada plugin.
Desde la API
Sección titulada «Desde la API»# Activarcurl -X POST http://localhost:3000/api/plugins/mi-plugin/activate \ -H "Authorization: Bearer <token>" \ -H "x-tenant-id: <tenantId>"
# Desactivarcurl -X POST http://localhost:3000/api/plugins/mi-plugin/deactivate \ -H "Authorization: Bearer <token>" \ -H "x-tenant-id: <tenantId>"Que pasa al desactivar
Sección titulada «Que pasa al desactivar»- Hooks no se ejecutan para esa empresa
- Campos de BD se ignoran en validación
- Manifests UI no se cargan
- Tablas y datos no se borran
Al reactivar el plugin todo vuelve a funcionar con los datos intactos: la activación es un interruptor por tenant, no una instalación.
Ciclo de vida de la activación
Sección titulada «Ciclo de vida de la activación»- El plugin se carga una sola vez por servidor: su
init()se ejecuta al arrancar, independientemente de qué tenants lo tengan activo. - La activación por tenant actúa como filtro en runtime: el estado se guarda en la tabla
TenantPlugin(con cache en memoria) y elHookManagerfiltra cada hook según la activación del plugin en ese tenant. - Por eso las migraciones (
addCustomField,createTable) se aplican al cargar el plugin, mientras que hooks y UI respetan el toggle de cada empresa.
Más contexto en Sistema de plugins § Ciclo de vida.