diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuPartDriver.cs b/src/Orchard.Web/Core/Navigation/Models/MenuPartDriver.cs index fba6edd17..03fee2409 100644 --- a/src/Orchard.Web/Core/Navigation/Models/MenuPartDriver.cs +++ b/src/Orchard.Web/Core/Navigation/Models/MenuPartDriver.cs @@ -1,15 +1,30 @@ using JetBrains.Annotations; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.Security; namespace Orchard.Core.Navigation.Models { [UsedImplicitly] public class MenuPartDriver : ContentPartDriver { + private readonly IAuthorizationService _authorizationService; + + public MenuPartDriver(IAuthorizationService authorizationService) { + _authorizationService = authorizationService; + } + + public virtual IUser CurrentUser { get; set; } + protected override DriverResult Editor(MenuPart part) { + if (!_authorizationService.TryCheckAccess(Permissions.ManageMainMenu, CurrentUser, part)) + return null; + return ContentPartTemplate(part, "Parts/Navigation.EditMenuPart").Location("primary", "9"); } protected override DriverResult Editor(MenuPart part, IUpdateModel updater) { + if (!_authorizationService.TryCheckAccess(Permissions.ManageMainMenu, CurrentUser, part)) + return null; + updater.TryUpdateModel(part, Prefix, null, null); return ContentPartTemplate(part, "Parts/Navigation.EditMenuPart").Location("primary", "9"); } diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuPartHandler.cs b/src/Orchard.Web/Core/Navigation/Models/MenuPartHandler.cs index 314ed15ca..1b19f15e6 100644 --- a/src/Orchard.Web/Core/Navigation/Models/MenuPartHandler.cs +++ b/src/Orchard.Web/Core/Navigation/Models/MenuPartHandler.cs @@ -8,7 +8,7 @@ namespace Orchard.Core.Navigation.Models { [UsedImplicitly] public class MenuPartHandler : ContentHandler { public MenuPartHandler(IRepository menuPartRepository) { - Filters.Add(new ActivatingFilter("blogpost")); + Filters.Add(new ActivatingFilter("blog")); Filters.Add(new ActivatingFilter("page")); Filters.Add(StorageFilter.For(menuPartRepository)); diff --git a/src/Orchard.Web/Core/Navigation/Services/MainMenu.cs b/src/Orchard.Web/Core/Navigation/Services/MainMenu.cs index 86c6c0151..fe7a2a0a4 100644 --- a/src/Orchard.Web/Core/Navigation/Services/MainMenu.cs +++ b/src/Orchard.Web/Core/Navigation/Services/MainMenu.cs @@ -19,8 +19,7 @@ namespace Orchard.Core.Navigation.Services { foreach (var menuPart in menuParts) { if (menuPart != null ) { MenuPart part = menuPart; - builder.Add("main menu", "1", - menu => menu + builder.Add(menu => menu .Add(part.MenuText, part.MenuPosition)); } }