diff --git a/src/Umbraco.Core/Models/Membership/EntityPermission.cs b/src/Umbraco.Core/Models/Membership/EntityPermission.cs
new file mode 100644
index 0000000000..a4ee6420c1
--- /dev/null
+++ b/src/Umbraco.Core/Models/Membership/EntityPermission.cs
@@ -0,0 +1,24 @@
+namespace Umbraco.Core.Models.Membership
+{
+ ///
+ /// Represents a user -> entity permission
+ ///
+ public class EntityPermission
+ {
+ public EntityPermission(object userId, int entityId, string[] assignedPermissions)
+ {
+ UserId = userId;
+ EntityId = entityId;
+ AssignedPermissions = assignedPermissions;
+ }
+
+ public object UserId { get; private set; }
+ public int EntityId { get; private set; }
+
+ ///
+ /// The assigned permissions for the user/entity combo
+ ///
+ public string[] AssignedPermissions { get; private set; }
+ }
+
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs
index b30e2fe209..6721790f5b 100644
--- a/src/Umbraco.Core/Persistence/Factories/UserFactory.cs
+++ b/src/Umbraco.Core/Persistence/Factories/UserFactory.cs
@@ -35,9 +35,8 @@ namespace Umbraco.Core.Persistence.Factories
Email = dto.Email,
Language = dto.UserLanguage,
DefaultToLiveEditing = dto.DefaultToLiveEditing,
- DefaultPermissions = dto.DefaultPermissions.IsNullOrWhiteSpace()
- ? Enumerable.Empty()
- : dto.DefaultPermissions.ToCharArray().Select(x => x.ToString(CultureInfo.InvariantCulture))
+ //NOTE: The default permission come from the user type's default permissions
+ DefaultPermissions = _userType.Permissions
};
foreach (var app in dto.User2AppDtos)
@@ -67,7 +66,6 @@ namespace Umbraco.Core.Persistence.Factories
UserLanguage = entity.Language,
UserName = entity.Name,
Type = short.Parse(entity.UserType.Id.ToString(CultureInfo.InvariantCulture)),
- DefaultPermissions = entity.DefaultPermissions == null ? "" : string.Join("", entity.DefaultPermissions),
User2AppDtos = new List()
};
diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
index 80352ae0dd..bbbb85fdb2 100644
--- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
@@ -6,6 +6,7 @@ using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
+using Umbraco.Core.Models.Membership;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence.Caching;
using Umbraco.Core.Persistence.Factories;
@@ -262,17 +263,19 @@ namespace Umbraco.Core.Persistence.Repositories
//Assign the same permissions to it as the parent node
- // http://issues.umbraco.org/issue/U4-2161
- var parentPermissions = GetPermissionsForEntity(entity.ParentId).ToArray();
+ // http://issues.umbraco.org/issue/U4-2161
+ var permissionsRepo = new PermissionRepository(UnitOfWork);
+ var parentPermissions = permissionsRepo.GetPermissionsForEntity(entity.ParentId).ToArray();
//if there are parent permissions then assign them, otherwise leave null and permissions will become the
// user's default permissions.
if (parentPermissions.Any())
{
- var userPermissions = parentPermissions.Select(
- permissionDto => new KeyValuePair