Visión general
El flujo de trabajo de validación de Sonata Extra registra las acciones realizadas en la administración, ofreciendo una vista general completa de las actividades, los recursos implicados, las descripciones y los usuarios. Esta funcionalidad garantiza que las acciones se registren pero no se apliquen de inmediato. Más bien, requieren una validación por parte de un usuario con el ROLE_APPROVE permiso.
Funcionalidades
- Registro de acciones: Registra cada acción pero no aplica los cambios de inmediato.
- Aprobación basada en el rol: Las acciones requieren la aprobación de un usuario que disponga de
ROLE_APPROVE. - Alerta de modificaciones pendientes: Un distintivo de notificación rojo en la interfaz de administración alerta a los administradores sobre las modificaciones pendientes de aprobación.
- Vista de acción detallada: Muestra el tipo de acción, el recurso, la descripción, el usuario y la fecha en la vista de lista.
- Botones de aprobación y detalle: Permite a los administradores aprobar los cambios o consultar información detallada.
- Función de purga: Una opción para purgar los cambios pendientes.
- Vista detallada de las modificaciones: Muestra los campos y valores afectados para cada acción.
Pantallas
-
Acción del editor:

-
Notificación del administrador:

-
Vista en lista:

-
Vista detallada:

Pasos de configuración
Agregar auriculares de eventos
sonata-extra.doctrine_activity_listener:
class: Partitech\SonataExtra\EventListener\DoctrineActivityListener
tags:
- { name: doctrine.event_listener, event: prePersist }
- { name: doctrine.event_listener, event: preUpdate }
- { name: doctrine.event_listener, event: preRemove }
- { name: doctrine.event_listener, event: onFlush }
- { name: kernel.event_listener, event: sonata.admin.event.batch_action.pre_batch_action, method: onPreBatchAction }
sonata-extra.configure_menu_listener:
class: Partitech\SonataExtra\EventListener\ConfigureMenuListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: onMenuConfigure }
arguments:
- "@service_container"
- "@doctrine.orm.entity_manager"
- "@request_stack"
- "@security.authorization_checker"
Configurar la exclusión de entidades
Puede excluir cualquier entidad del flujo de trabajo. Por defecto, debería excluir sus entidades SonataMediaMedia y User.
parameters:
sonata_approve_excluded_entities:
- 'App\Entity\BackofficeUser'
- 'App\Entity\SonataMediaMedia'
- 'Partitech\SonataExtra\Entity\Slider'
Configurar el menú
Por defecto, el menú de aprobación se inserta dinámicamente en la raíz del menú con una alerta visual roja. Para evitar la visualización doble cuando el grupo de menús esté abierto, puede enumerar los elementos del menú que ocultarán la alerta de raíz.
parameters:
sonata_approve_menu:
- 'admin_app_approval'
- 'admin_app_adminactivitylog'
- 'admin_app_sonatamediamedia'
- 'admin_app_backofficeuser'
- 'admin_app_sonatapagesite'
Configurar los roles
Todos los usuarios que no tengan el rol ROLE_APPROVE estarán en la regla del flujo de trabajo. Si desea obtener el registro de actividades administrativas sin el flujo de trabajo de aprobación, simplemente agregue ROLE_APPROVE a su usuario administrador por defecto.
security:
role_hierarchy:
ROLE_EDITOR:
- ROLE_USER
- ROLE_SONATA_ADMIN
- ROLE_ADMIN_USERADMIN_ALL
- ROLE_ADMIN_ADMIN_ACTIVITY_LOG_ALL
- ROLE_ADMIN_ADMIN_APPROVAL_LOG_ALL
- ROLE_ADMIN_USERADMIN_ALL
- ROLE_ADMIN_REDIRECTION_ALL
- ROLE_SONATA_EXTRA_ADMIN_SLIDER_ALL
- ROLE_SONATA_EXTRA_ADMIN_SLIDER_SLIDES_ALL
- ROLE_SONATA_EXTRA_ADMIN_FAQ_CATEGORY_ALL
- ROLE_SONATA_EXTRA_ADMIN_FAQ_QUESTION_ALL
- ROLE_SONATA_USER_ADMIN_USER_ALL
- ROLE_SONATA_MEDIA_ADMIN_MEDIA_ALL
- ROLE_SONATA_MEDIA_ADMIN_GALLERY_ALL
- ROLE_SONATA_MEDIA_ADMIN_GALLERY_ITEM_ALL
- ROLE_SONATA_PAGE_ADMIN_PAGE_ALL
- ROLE_SONATA_PAGE_ADMIN_BLOCK_ALL
- ROLE_SONATA_PAGE_ADMIN_SHARED_BLOCK_ALL
- ROLE_SONATA_PAGE_ADMIN_SNAPSHOT_ALL
- ROLE_SONATA_PAGE_ADMIN_SITE_ALL
- ROLE_PRODIGIOUS_SONATA_MENU_ADMIN_MENU_ALL
- ROLE_PRODIGIOUS_SONATA_MENU_ADMIN_MENU_ITEM_ALL
ROLE_ADMIN:
- ROLE_USER
- ROLE_SONATA_ADMIN
- ROLE_APPROVE
- ROLE_EDITOR
- ROLE_ADMIN_ADMIN_ACTIVITY_LOG_ALL
- ROLE_ADMIN_ADMIN_APPROVAL_LOG_ALL
-
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Uso y flujo de trabajo
- Usuarios no aprobados: Usuarios sin
ROLE_APPROVEpuede realizar acciones, pero estas serán registradas y estarán a la espera de aprobación. - Aprobación requerida: Una notificación en la herramienta 'Cambios pendientes' alerta a los administradores sobre las acciones que requieren aprobación.
- Proceso de aprobación: Los administradores con el ROL_APROBAR pueden consultar los detalles y ya sea aprobar o rechazar los cambios.
- Opción de purga: Los administradores pueden usar el botón de purga para borrar los cambios pendientes.
Conclusión
El flujo de trabajo de aprobación SonataExtra refuerza el control y la seguridad al garantizar que todas las modificaciones se registren y requieran la aprobación del personal autorizado. Esta funcionalidad es crucial para mantener la integridad y la responsabilidad dentro de la interfaz de administración.
Adaptar el ejemplo a la versión instalada
Los ejemplos de Symfony y Sonata permanecen ligados a las versiones indicadas en el artículo. Symfony 4.x y Symfony 6.2 ya no se mantienen: para un proyecto actual, utilice una rama mantenida y la documentación que corresponda exactamente a sus dependencias.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Antes de retomar el código, controle las firmas, los servicios, las rutas y las plantillas correspondientes. Después, agregue una prueba funcional que cubra los permisos, el código HTTP y el resultado visible.
Referencia: versiones de Symfony mantenidas.