Updating a bunch of start node checking logic to ensure that it takes the user and user group start nodes into account
This commit is contained in:
@@ -33,7 +33,15 @@ namespace Umbraco.Core.Models.Identity
|
||||
/// Gets/sets the user's real name
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Content start nodes assigned to the User (not ones assigned to the user's groups)
|
||||
/// </summary>
|
||||
public int[] StartContentIds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media start nodes assigned to the User (not ones assigned to the user's groups)
|
||||
/// </summary>
|
||||
public int[] StartMediaIds { get; set; }
|
||||
public string[] AllowedSections { get; set; }
|
||||
public string[] Groups { get; set; }
|
||||
|
||||
@@ -667,14 +667,14 @@ namespace Umbraco.Web.Editors
|
||||
type = "media";
|
||||
|
||||
AddExamineSearchFrom(searchFrom, sb);
|
||||
AddExamineUserStartNode(Security.CurrentUser.StartMediaIds, sb);
|
||||
AddExamineUserStartNode(Security.CurrentUser.GetCombinedStartMediaIds().ToArray(), sb);
|
||||
|
||||
break;
|
||||
case UmbracoEntityTypes.Document:
|
||||
type = "content";
|
||||
|
||||
AddExamineSearchFrom(searchFrom, sb);
|
||||
AddExamineUserStartNode(Security.CurrentUser.StartContentIds, sb);
|
||||
AddExamineUserStartNode(Security.CurrentUser.GetCombinedStartContentIds().ToArray(), sb);
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -40,9 +40,10 @@ namespace Umbraco.Web.Trees
|
||||
|
||||
protected override TreeNode CreateRootNode(FormDataCollection queryStrings)
|
||||
{
|
||||
var node = base.CreateRootNode(queryStrings);
|
||||
var node = base.CreateRootNode(queryStrings);
|
||||
|
||||
//if the user's start node is not default, then ensure the root doesn't have a menu
|
||||
if (Security.CurrentUser.StartContentIds.Length > 0 && Security.CurrentUser.StartContentIds.Contains(Constants.System.Root) == false)
|
||||
if (UserStartNodes.Length > 0 && UserStartNodes.Contains(Constants.System.Root) == false)
|
||||
{
|
||||
node.MenuUrl = "";
|
||||
}
|
||||
@@ -60,9 +61,10 @@ namespace Umbraco.Web.Trees
|
||||
get { return Services.ContentService.RecycleBinSmells(); }
|
||||
}
|
||||
|
||||
private int[] _userStartNodes;
|
||||
protected override int[] UserStartNodes
|
||||
{
|
||||
get { return Security.CurrentUser.StartContentIds; }
|
||||
get { return _userStartNodes ?? (_userStartNodes = Security.CurrentUser.GetCombinedStartContentIds().ToArray()); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -119,9 +121,9 @@ namespace Umbraco.Web.Trees
|
||||
if (id == Constants.System.Root.ToInvariantString())
|
||||
{
|
||||
var menu = new MenuItemCollection();
|
||||
|
||||
|
||||
//if the user's start node is not the root then ensure the root menu is empty/doesn't exist
|
||||
if (Security.CurrentUser.StartContentIds.Length > 0 && Security.CurrentUser.StartContentIds.Contains(Constants.System.Root) == false)
|
||||
if (UserStartNodes.Length > 0 && UserStartNodes.Contains(Constants.System.Root) == false)
|
||||
{
|
||||
return menu;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace Umbraco.Web.Trees
|
||||
{
|
||||
var node = base.CreateRootNode(queryStrings);
|
||||
//if the user's start node is not default, then ensure the root doesn't have a menu
|
||||
if (Security.CurrentUser.StartMediaIds.Length > 0 && Security.CurrentUser.StartMediaIds.Contains(Constants.System.Root) == false)
|
||||
if (UserStartNodes.Length > 0 && UserStartNodes.Contains(Constants.System.Root) == false)
|
||||
{
|
||||
node.MenuUrl = "";
|
||||
}
|
||||
@@ -53,9 +53,10 @@ namespace Umbraco.Web.Trees
|
||||
get { return Services.MediaService.RecycleBinSmells(); }
|
||||
}
|
||||
|
||||
private int[] _userStartNodes;
|
||||
protected override int[] UserStartNodes
|
||||
{
|
||||
get { return Security.CurrentUser.StartMediaIds; }
|
||||
get { return _userStartNodes ?? (_userStartNodes = Security.CurrentUser.GetCombinedStartMediaIds().ToArray()); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -100,7 +101,7 @@ namespace Umbraco.Web.Trees
|
||||
if (id == Constants.System.Root.ToInvariantString())
|
||||
{
|
||||
//if the user's start node is not the root then ensure the root menu is empty/doesn't exist
|
||||
if (Security.CurrentUser.StartMediaIds.Length > 0 && Security.CurrentUser.StartMediaIds.Contains(Constants.System.Root) == false)
|
||||
if (UserStartNodes.Length > 0 && UserStartNodes.Contains(Constants.System.Root) == false)
|
||||
{
|
||||
return menu;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Services;
|
||||
using umbraco.BusinessLogic.Actions;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Web.WebApi.Filters
|
||||
{
|
||||
@@ -46,7 +47,7 @@ namespace Umbraco.Web.WebApi.Filters
|
||||
|
||||
protected override int[] GetUserStartNodes(IUser user)
|
||||
{
|
||||
return user.StartContentIds;
|
||||
return user.GetCombinedStartContentIds().ToArray();
|
||||
}
|
||||
|
||||
protected override int RecycleBinId
|
||||
|
||||
@@ -16,6 +16,7 @@ using Umbraco.Core.Services;
|
||||
using umbraco.BusinessLogic;
|
||||
using umbraco.DataLayer;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Security;
|
||||
|
||||
namespace umbraco.BasePages
|
||||
@@ -294,8 +295,8 @@ namespace umbraco.BasePages
|
||||
RealName = u.Name,
|
||||
//currently we only have one user type!
|
||||
Roles = u.GetGroups(),
|
||||
StartContentNodes = u.UserEntity.StartContentIds,
|
||||
StartMediaNodes = u.UserEntity.StartMediaIds,
|
||||
StartContentNodes = u.UserEntity.GetCombinedStartContentIds().ToArray(),
|
||||
StartMediaNodes = u.UserEntity.GetCombinedStartMediaIds().ToArray(),
|
||||
Username = u.LoginName,
|
||||
Culture = ui.Culture(u)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user