diff --git a/src/Umbraco.Core/Models/UserExtensions.cs b/src/Umbraco.Core/Models/UserExtensions.cs index a79aec5026..30b80f253c 100644 --- a/src/Umbraco.Core/Models/UserExtensions.cs +++ b/src/Umbraco.Core/Models/UserExtensions.cs @@ -25,7 +25,7 @@ namespace Umbraco.Core.Models /// Returns all of the user's assigned start node ids based on ids assigned directly to the IUser object and it's groups /// /// - public static IEnumerable GetCombinedMediaContentIds(this IUser user) + public static IEnumerable GetCombinedStartMediaIds(this IUser user) { return user.StartMediaIds.Concat(user.Groups.Select(x => x.StartMediaId)).Distinct(); } @@ -136,10 +136,10 @@ namespace Umbraco.Core.Models if (content == null) throw new ArgumentNullException("content"); return HasPathAccess(content.Path, user.GetCombinedStartContentIds().ToArray(), Constants.System.RecycleBinContent); } - + internal static bool HasPathAccess(string path, int[] startNodeIds, int recycleBinId) { - Mandate.ParameterNotNullOrEmpty(path, "path"); + if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("Value cannot be null or whitespace.", "path"); var formattedPath = "," + path + ","; var formattedRecycleBinId = "," + recycleBinId.ToInvariantString() + ","; @@ -178,7 +178,7 @@ namespace Umbraco.Core.Models { if (user == null) throw new ArgumentNullException("user"); if (media == null) throw new ArgumentNullException("media"); - return HasPathAccess(media.Path, user.GetCombinedMediaContentIds().ToArray(), Constants.System.RecycleBinMedia); + return HasPathAccess(media.Path, user.GetCombinedStartMediaIds().ToArray(), Constants.System.RecycleBinMedia); } /// diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index 6682b22389..6cf0282438 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -802,12 +802,12 @@ namespace Umbraco.Web.Editors var hasPathAccess = (nodeId == Constants.System.Root) ? UserExtensions.HasPathAccess( Constants.System.Root.ToInvariantString(), - user.StartContentIds, + user.GetCombinedStartContentIds().ToArray(), Constants.System.RecycleBinContent) : (nodeId == Constants.System.RecycleBinContent) ? UserExtensions.HasPathAccess( Constants.System.RecycleBinContent.ToInvariantString(), - user.StartContentIds, + user.GetCombinedStartContentIds().ToArray(), Constants.System.RecycleBinContent) : user.HasPathAccess(contentItem); diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs index 77be2e2c37..9c96a865ca 100644 --- a/src/Umbraco.Web/Editors/MediaController.cs +++ b/src/Umbraco.Web/Editors/MediaController.cs @@ -887,12 +887,12 @@ namespace Umbraco.Web.Editors var hasPathAccess = (nodeId == Constants.System.Root) ? UserExtensions.HasPathAccess( Constants.System.Root.ToInvariantString(), - user.StartMediaIds, + user.GetCombinedStartMediaIds().ToArray(), Constants.System.RecycleBinMedia) : (nodeId == Constants.System.RecycleBinMedia) ? UserExtensions.HasPathAccess( Constants.System.RecycleBinMedia.ToInvariantString(), - user.StartMediaIds, + user.GetCombinedStartMediaIds().ToArray(), Constants.System.RecycleBinMedia) : user.HasPathAccess(media); diff --git a/src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs b/src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs index 72cea5c2d0..6e8c411db7 100644 --- a/src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs +++ b/src/Umbraco.Web/WebApi/Filters/FilterAllowedOutgoingMediaAttribute.cs @@ -41,7 +41,7 @@ namespace Umbraco.Web.WebApi.Filters protected virtual int[] GetUserStartNodes(IUser user) { - return user.StartMediaIds; + return user.GetCombinedStartMediaIds().ToArray(); } protected virtual int RecycleBinId