Hablemos de su proyecto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: flujo de trabajo de validación

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 ...

Contrôles de compatibilité Symfony et Sonata

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: aprobación_acción_editor.png

  • Notificación del administrador: notificación_aprobación_admin.png

  • Vista en lista: liste_admin_approbation.png

  • Vista detallada: detalle_aprobación_admin.png

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_APPROVE puede 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.

Compartir este artículo