Panoramica
Il flusso di lavoro di validazione di Sonata Extra registra le azioni effettuate nell'amministrazione, offrendo una panoramica completa delle attività, delle risorse coinvolte, delle descrizioni e degli utenti. Questa funzionalità garantisce che le azioni siano registrate ma non applicate immediatamente. Esse richiedono invece una convalida da parte di un utente con il ROLE_APPROVE permesso.
Funzionalità
- Registrazione delle azioni: Registra ogni azione ma non applica immediatamente le modifiche.
- Approvazione basata sul ruolo: Le azioni richiedono l'approvazione di un utente con
ROLE_APPROVE. - Avviso di modifiche in sospeso: Un badge di notifica rosso nell'interfaccia di amministrazione avvisa gli amministratori delle modifiche in attesa di approvazione.
- Vista dell'azione dettagliata: Visualizza il tipo di azione, la risorsa, la descrizione, l'utente e la data nella visualizzazione elenco.
- Pulsanti di approvazione e dettaglio: Consente agli amministratori di approvare le modifiche o di consultare informazioni dettagliate.
- Funzionalità di pulizia: Un'opzione per eliminare le modifiche in sospeso.
- Visualizzazione dettagliata delle modifiche: Mostra i campi e i valori interessati per ogni azione.
Schermi
-
Azione dell'editore:

-
Notifica dell'amministratore:

-
Visualizzazione a elenco:

-
Vista dettagliata:

Fasi di configurazione
Aggiungere gli auricolari per eventi
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"
Configurare l'esclusione delle entità
Puoi escludere qualsiasi entità dal workflow. Per impostazione predefinita, dovresti escludere le tue entità SonataMediaMedia e User.
parameters:
sonata_approve_excluded_entities:
- 'App\Entity\BackofficeUser'
- 'App\Entity\SonataMediaMedia'
- 'Partitech\SonataExtra\Entity\Slider'
Configurare il menu
Per impostazione predefinita, il menu di approvazione viene inserito dinamicamente nella radice del menu con un avviso visivo rosso. Per evitare la visualizzazione duplicata quando il gruppo di menu è aperto, è possibile elencare gli elementi del menu che nasconderanno l'avviso della radice.
parameters:
sonata_approve_menu:
- 'admin_app_approval'
- 'admin_app_adminactivitylog'
- 'admin_app_sonatamediamedia'
- 'admin_app_backofficeuser'
- 'admin_app_sonatapagesite'
Configurare i ruoli
Tutti gli utenti che non hanno il ruolo ROLE_APPROVE saranno nella regola del workflow. Se volete ottenere il registro delle attività amministrative senza il workflow di approvazione, aggiungete semplicemente ROLE_APPROVE al vostro utente amministratore predefinito.
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]
Utilizzo e flusso di lavoro
- Utenti non approvati: Utenti senza
ROLE_APPROVEpuò eseguire azioni, ma queste saranno registrate e in attesa di approvazione. - Approvazione richiesta: Una notifica nello strumento 'Modifiche in sospeso' avverte gli amministratori delle azioni che richiedono approvazione.
- Processo di approvazione: Gli amministratori con il RUOLO_APPROVARE possono consultare i dettagli e approvare o rifiutare le modifiche.
- Opzione di cancellazione: Gli amministratori possono usare il pulsante di cancellazione per eliminare le modifiche in sospeso.
Conclusione
Il flusso di lavoro di approvazione SonataExtra rafforza il controllo e la sicurezza assicurando che tutte le modifiche siano registrate e richiedano l'approvazione del personale autorizzato. Questa funzionalità è cruciale per mantenere l'integrità e la responsabilità all'interno dell'interfaccia di amministrazione.
Adattare l’esempio alla versione installata
Gli esempi Symfony e Sonata rimangono legati alle versioni indicate nell’articolo. Symfony 4.x e Symfony 6.2 non sono più supportati: per un progetto attuale, utilizzate un ramo mantenuto e la documentazione corrispondente esattamente alle vostre dipendenze.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Prima di riprendere il codice, controllate le firme, i servizi, le rotte e i template interessati. Aggiungete poi un test funzionale che copra le autorizzazioni, il codice HTTP e il risultato visibile.
Riferimento : versioni di Symfony supportate.