Pawan Singh
workspace_premiumPaaS CMS Administrator Certification
Jul 20, 2025
visibility 592
star star star star star
(1 votes)

Disable Report and Dashboard Menu content editors

We had a requirement where Report and Dashboard menus were needed only for specific roles/users Or Admins — but not for editors.

Below is default view for editors where  you can see these menus:

But required view is: 



1.  To achieve above, we implemented a  custom Interceptor class that wraps another IMenuProvider and overrides the authorization logic as below.

using EPiServer.Shell.Navigation;
namespace alloy_example.Customization.Menus;

public class MenuProviderInterceptor : IMenuProvider
{
    private readonly IMenuProvider _menu;

    public MenuProviderInterceptor(IMenuProvider menu)
    {
        _menu = menu;
    }

    public IEnumerable<MenuItem> GetMenuItems()
    {
        var menuItems = _menu.GetMenuItems().ToList();
        menuItems.ForEach(item =>
        {           
            item.AuthorizationPolicy = "episerver:cmsadmin";
        });
        return menuItems;
    }
}


 2. we need to hook this interceptor only for specific providers — like ReportsMenuProvider or DashboardMenuProvider based on requirement.

services.Intercept<IMenuProvider>(interceptorFactory);

private static IMenuProvider interceptorFactory(IServiceProvider provider1, IMenuProvider provider2)
 {
     var types = new[] { typeof(ReportsMenuProvider), typeof(DashboardMenuProvider) };
     return types.Any(t => t.Equals(provider2.GetType())) ? new MenuProviderInterceptor(provider2) : provider2;
 }

This way, only ReportsMenuProvider and DashboardMenuProvider are affected — all other menus remain untouched. Hope this helps someone!

Jul 20, 2025

Comments

error Please login to comment.
Latest blogs
Migrating ContentArea.FilteredItems in Optimizely CMS 13

If you have

Adnan Zameer | Oct 19, 2026 |

Categories have landed in Optimizely SaaS CMS: structure, translate, tag and query

Categories arrived in Optimizely SaaS CMS at the end of August, with Graph support alongside. I have wanted a proper taxonomy in SaaS since the fir...

Minesh Shah (Netcel) | Oct 19, 2026

Exploring Cached Templates and Cursor Pagination in the Optimizely Graph C# SDK

While experimenting with the  Optimizely Graph C# SDK (13.3.0) in my local Optimizely CMS 13 Alloy project, I came across two interesting findings:...

Mardy | Oct 19, 2026

EPiServer.ImageLibrary.ImageSharp 2.0.7 delisted from NuGet feed

We have delisted version 2.0.7 of the EPiServer.ImageLibrary.ImageSharp package from the NuGet feed due to a packaging issue. This version was...

Phu Nguyen | Oct 19, 2026