Tổng quan
Quy trình công việc xác nhận của Sonata Extra ghi lại các hành động thực hiện trong quản trị, cung cấp cái nhìn tổng quan đầy đủ về các hoạt động, các tài nguyên liên quan, các mô tả và người dùng. Tính năng này đảm bảo rằng các hành động được ghi lại nhưng không được áp dụng ngay lập tức. Chúng thay vào đó yêu cầu sự xác nhận của một người dùng với ROLE_APPROVE quyền.
Tính năng
- Ghi nhật ký các hành động: Ghi lại mỗi hành động nhưng không áp dụng các thay đổi ngay lập tức.
- Phê duyệt dựa trên vai trò: Các hành động yêu cầu sự phê duyệt của một người dùng có
ROLE_APPROVE. - Cảnh báo thay đổi đang chờ xử lý: Một huy hiệu thông báo màu đỏ trong giao diện quản trị cảnh báo các quản trị viên về những thay đổi đang chờ phê duyệt.
- Chế độ xem hành động chi tiết: Hiển thị loại hành động, tài nguyên, mô tả, người dùng và ngày trong chế độ xem danh sách.
- Nút phê duyệt và chi tiết: Cho phép quản trị viên phê duyệt các thay đổi hoặc xem thông tin chi tiết.
- Tính năng xóa: Một tùy chọn để xóa các thay đổi đang chờ.
- Chế độ xem chi tiết các thay đổi: Hiển thị các trường và giá trị bị ảnh hưởng cho mỗi hành động.
Màn hình
-
Hành động của nhà xuất bản:

-
Thông báo từ quản trị viên:

-
Chế độ xem danh sách:

-
Xem chi tiết:

Các bước cài đặt
Thêm bộ nghe sự kiện
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"
Cấu hình loại trừ các thực thể
Bạn có thể loại trừ bất kỳ thực thể nào khỏi quy trình làm việc. Theo mặc định, bạn nên loại trừ các thực thể SonataMediaMedia và User của mình.
parameters:
sonata_approve_excluded_entities:
- 'App\Entity\BackofficeUser'
- 'App\Entity\SonataMediaMedia'
- 'Partitech\SonataExtra\Entity\Slider'
Cấu hình menu
Theo mặc định, menu phê duyệt được chèn động tại gốc của menu với một cảnh báo trực quan màu đỏ. Để tránh hiển thị trùng lặp khi nhóm menu được mở, bạn có thể liệt kê các mục menu sẽ ẩn cảnh báo tại gốc.
parameters:
sonata_approve_menu:
- 'admin_app_approval'
- 'admin_app_adminactivitylog'
- 'admin_app_sonatamediamedia'
- 'admin_app_backofficeuser'
- 'admin_app_sonatapagesite'
Cấu hình các vai trò
Tất cả người dùng không có vai trò ROLE_APPROVE sẽ nằm trong quy tắc quy trình làm việc. Nếu bạn muốn nhận nhật ký các hoạt động quản trị mà không có quy trình phê duyệt, chỉ cần thêm ROLE_APPROVE vào người dùng quản trị mặc định của bạn.
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]
Sử dụng và quy trình làm việc
- Người dùng không được phê duyệt: Người dùng không có
ROLE_APPROVEcó thể thực hiện các hành động, nhưng những hành động này sẽ được ghi lại và đang chờ phê duyệt. - Phê duyệt bắt buộc: Một thông báo trong công cụ 'Thay đổi đang chờ xử lý' cảnh báo các quản trị viên về các hành động cần phê duyệt.
- Quy trình phê duyệt: Các quản trị viên có VAI_TRÒ_PHÊ_DUYỆT có thể xem chi tiết và hoặc phê duyệt, hoặc từ chối các thay đổi.
- Tùy chọn làm sạch: Quản trị viên có thể sử dụng nút làm sạch để xóa các thay đổi đang chờ xử lý.
Kết luận
Luồng công việc phê duyệt SonataExtra tăng cường kiểm soát và bảo mật bằng cách đảm bảo rằng tất cả các thay đổi được ghi lại và cần được nhân viên có thẩm quyền phê duyệt. Tính năng này rất quan trọng để duy trì tính toàn vẹn và trách nhiệm trong giao diện quản trị.
Điều chỉnh ví dụ cho phù hợp với phiên bản đã cài đặt
Các ví dụ Symfony và Sonata vẫn gắn với các phiên bản được chỉ ra trong bài viết. Symfony 4.x và Symfony 6.2 không còn được duy trì: đối với một dự án hiện tại, hãy sử dụng một nhánh được duy trì và tài liệu tương ứng chính xác với các phụ thuộc của bạn.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Trước khi tiếp tục với mã, hãy kiểm tra các chữ ký, dịch vụ, tuyến đường và mẫu liên quan. Sau đó thêm một bài kiểm tra chức năng bao phủ quyền, mã HTTP và kết quả hiển thị.
Tham chiếu : phiên bản Symfony được hỗ trợ.