#18861: Fixing navigation permissions

Work Item: 18861

--HG--
branch : 1.x
This commit is contained in:
sebros@SEBROS3.redmond.corp.microsoft.com
2012-09-18 18:00:28 -07:00
parent c2e2c3cfec
commit 7482cdba07

View File

@@ -93,10 +93,19 @@ namespace Orchard.UI.Navigation {
/// </summary>
private IEnumerable<MenuItem> Reduce(IEnumerable<MenuItem> items) {
var hasDebugShowAllMenuItems = _authorizationService.TryCheckAccess(Permission.Named("DebugShowAllMenuItems"), _orchardServices.WorkContext.CurrentUser, null);
var isAdminMenu = AdminFilter.IsApplied(_urlHelper.RequestContext);
foreach (var item in items) {
if (hasDebugShowAllMenuItems ||
AdminFilter.IsApplied(_urlHelper.RequestContext) ||
item.Permissions.Concat(new [] { Permission.Named("ViewContent") }).Any(x => _authorizationService.TryCheckAccess(x, _orchardServices.WorkContext.CurrentUser, item.Content))) {
if (
// debug flag is on
hasDebugShowAllMenuItems ||
// a content item is linked and the user can view it
item.Content != null && item.Permissions.Concat(new [] { Permission.Named("ViewContent") }).Any(x => _authorizationService.TryCheckAccess(x, _orchardServices.WorkContext.CurrentUser, item.Content)) ||
// it's the admin menu and permissions are effective
isAdminMenu && (!item.Permissions.Any() || item.Permissions.Any(x => _authorizationService.TryCheckAccess(x, _orchardServices.WorkContext.CurrentUser, null))) ) {
yield return new MenuItem {
Items = Reduce(item.Items),
Permissions = item.Permissions,