diff --git a/src/Umbraco.Core/Models/Membership/EntityPermission.cs b/src/Umbraco.Core/Models/Membership/EntityPermission.cs index a4ee6420c1..754adadc7b 100644 --- a/src/Umbraco.Core/Models/Membership/EntityPermission.cs +++ b/src/Umbraco.Core/Models/Membership/EntityPermission.cs @@ -5,14 +5,14 @@ /// public class EntityPermission { - public EntityPermission(object userId, int entityId, string[] assignedPermissions) + public EntityPermission(int userId, int entityId, string[] assignedPermissions) { UserId = userId; EntityId = entityId; AssignedPermissions = assignedPermissions; } - public object UserId { get; private set; } + public int UserId { get; private set; } public int EntityId { get; private set; } /// diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index f6c91d2fa7..c958886ebc 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -276,7 +276,7 @@ namespace Umbraco.Core.Persistence.Repositories var userPermissions = ( from perm in parentPermissions from p in perm.AssignedPermissions - select new Tuple(perm.UserId, p)).ToList(); + select new Tuple(perm.UserId, p)).ToList(); permissionsRepo.AssignEntityPermissions(entity, userPermissions); //flag the entity's permissions changed flag so we can track those changes. @@ -530,7 +530,7 @@ namespace Umbraco.Core.Persistence.Repositories return GetByVersion(dto.ContentVersionDto.VersionId); } - public void AssignEntityPermissions(IContent entity, char permission, IEnumerable userIds) + public void AssignEntityPermissions(IContent entity, char permission, IEnumerable userIds) { var repo = new PermissionRepository(UnitOfWork, _cacheHelper); repo.AssignEntityPermissions(entity, permission, userIds); diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs index 06beebda9e..3a441e0857 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs @@ -23,7 +23,7 @@ namespace Umbraco.Core.Persistence.Repositories /// An enumerable list of IEnumerable GetByPublishedVersion(IQuery query); - void AssignEntityPermissions(IContent entity, char permission, IEnumerable userIds); + void AssignEntityPermissions(IContent entity, char permission, IEnumerable userIds); IEnumerable GetPermissionsForEntity(int entityId); } diff --git a/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs index e5668b2972..ced8dba66d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs @@ -134,7 +134,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// /// - internal void AssignEntityPermissions(TEntity entity, char permission, IEnumerable userIds) + internal void AssignEntityPermissions(TEntity entity, char permission, IEnumerable userIds) { var actions = userIds.Select(id => new User2NodePermissionDto { @@ -153,13 +153,13 @@ namespace Umbraco.Core.Persistence.Repositories /// /// A key/value pair list containing a userId and a permission to assign /// - internal void AssignEntityPermissions(TEntity entity, IEnumerable> userPermissions) + internal void AssignEntityPermissions(TEntity entity, IEnumerable> userPermissions) { var actions = userPermissions.Select(p => new User2NodePermissionDto { NodeId = entity.Id, Permission = p.Item2, - UserId = (int)p.Item1 + UserId = p.Item1 }); _unitOfWork.Database.BulkInsertRecords(actions); @@ -171,7 +171,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// /// - internal void ReplaceEntityPermissions(TEntity entity, string permissions, IEnumerable userIds) + internal void ReplaceEntityPermissions(TEntity entity, string permissions, IEnumerable userIds) { _unitOfWork.Database.Update( GenerateReplaceEntityPermissionsSql(entity.Id, permissions, userIds.ToArray())); @@ -186,7 +186,7 @@ namespace Umbraco.Core.Persistence.Repositories /// A callback to get the descendant Ids of the current entity /// /// - internal void ReplaceEntityPermissions(TEntity entity, string permissions, Func> getDescendantIds, IEnumerable userIds) + internal void ReplaceEntityPermissions(TEntity entity, string permissions, Func> getDescendantIds, IEnumerable userIds) { _unitOfWork.Database.Update( GenerateReplaceEntityPermissionsSql( @@ -195,12 +195,12 @@ namespace Umbraco.Core.Persistence.Repositories userIds.ToArray())); } - internal static string GenerateReplaceEntityPermissionsSql(int entityId, string permissions, object[] userIds) + internal static string GenerateReplaceEntityPermissionsSql(int entityId, string permissions, int[] userIds) { return GenerateReplaceEntityPermissionsSql(new[] { entityId }, permissions, userIds); } - internal static string GenerateReplaceEntityPermissionsSql(int[] entityIds, string permissions, object[] userIds) + internal static string GenerateReplaceEntityPermissionsSql(int[] entityIds, string permissions, int[] userIds) { //create the "SET" clause of the update statement var sqlSet = string.Format("SET {0}={1}", diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index b481db9825..3d004e5c2d 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Events; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Models; +using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Caching; @@ -60,7 +61,7 @@ namespace Umbraco.Core.Services //TODO: There are various ways to expose permission setting on this service, we just need to list out the different ways we'll need to // be able to acheive this for the core, for now this is here so I can run a unit test. - internal void AssignContentPermissions(IContent entity, char permission, IEnumerable userIds) + internal void AssignContentPermissions(IContent entity, char permission, IEnumerable userIds) { var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateContentRepository(uow)) @@ -1217,6 +1218,7 @@ namespace Umbraco.Core.Services } } + /// /// Sends an to Publication, which executes handlers and events for the 'Send to Publication' action. /// diff --git a/src/Umbraco.Core/Services/IContentService.cs b/src/Umbraco.Core/Services/IContentService.cs index 9acdef9bc3..31148c89d3 100644 --- a/src/Umbraco.Core/Services/IContentService.cs +++ b/src/Umbraco.Core/Services/IContentService.cs @@ -11,6 +11,7 @@ namespace Umbraco.Core.Services /// public interface IContentService : IService { + bool SendToPublication(IContent content, int userId = 0); diff --git a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs index eb98548c19..7f96dfade2 100644 --- a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs @@ -16,7 +16,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Generate_Replace_Entity_Permissions_Test() { // Act - var sql = PermissionRepository.GenerateReplaceEntityPermissionsSql(123, "A", new object[] {10, 11, 12}); + var sql = PermissionRepository.GenerateReplaceEntityPermissionsSql(123, "A", new int[] {10, 11, 12}); // Assert Assert.AreEqual(@"SET [permission]='A' WHERE (([nodeId]=123) AND ([userId]=10 OR [userId]=11 OR [userId]=12))", sql); @@ -26,7 +26,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Generate_Replace_Entity_Permissions_With_Descendants_Test() { // Act - var sql = PermissionRepository.GenerateReplaceEntityPermissionsSql(new[] { 123, 456 },"A", new object[] { 10, 11, 12 }); + var sql = PermissionRepository.GenerateReplaceEntityPermissionsSql(new[] { 123, 456 }, "A", new int[] { 10, 11, 12 }); // Assert Assert.AreEqual(@"SET [permission]='A' WHERE (([nodeId]=123 OR [nodeId]=456) AND ([userId]=10 OR [userId]=11 OR [userId]=12))", sql); diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs index b6b6e3fe1b..67b9a7c593 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs @@ -69,7 +69,7 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Commit(); // Act - repository.AssignEntityPermissions(parentPage, 'A', new object[] { 0 }); + repository.AssignEntityPermissions(parentPage, 'A', new int[] { 0 }); var childPage = MockedContent.CreateSimpleContent(contentType, "child", parentPage); repository.AddOrUpdate(childPage); unitOfWork.Commit(); diff --git a/src/Umbraco.Tests/Services/UserServiceTests.cs b/src/Umbraco.Tests/Services/UserServiceTests.cs index 17ad5a1031..2a64d79f4c 100644 --- a/src/Umbraco.Tests/Services/UserServiceTests.cs +++ b/src/Umbraco.Tests/Services/UserServiceTests.cs @@ -73,14 +73,14 @@ namespace Umbraco.Tests.Services MockedContent.CreateSimpleContent(contentType) }; ServiceContext.ContentService.Save(content); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionBrowse.Instance.Letter, new object[] { user.Id }); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionDelete.Instance.Letter, new object[] { user.Id }); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionMove.Instance.Letter, new object[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionBrowse.Instance.Letter, new int[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionDelete.Instance.Letter, new int[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(0), ActionMove.Instance.Letter, new int[] { user.Id }); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(1), ActionBrowse.Instance.Letter, new object[] { user.Id }); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(1), ActionDelete.Instance.Letter, new object[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(1), ActionBrowse.Instance.Letter, new int[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(1), ActionDelete.Instance.Letter, new int[] { user.Id }); - ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(2), ActionBrowse.Instance.Letter, new object[] { user.Id }); + ((ContentService)ServiceContext.ContentService).AssignContentPermissions(content.ElementAt(2), ActionBrowse.Instance.Letter, new int[] { user.Id }); // Act var permissions = userService.GetPermissions(user, content.ElementAt(0).Id, content.ElementAt(1).Id, content.ElementAt(2).Id); @@ -153,6 +153,17 @@ namespace Umbraco.Tests.Services Assert.IsNull(ServiceContext.UserService.GetByUsername("notFound")); } + [Test] + public void Get_By_Username_With_Backslash() + { + var userType = MockedUserType.CreateUserType(); + ServiceContext.UserService.SaveUserType(userType); + var user = ServiceContext.UserService.CreateMemberWithIdentity("mydomain\\JohnDoe", "john@umbraco.io", "12345", userType); + + Assert.IsNotNull(ServiceContext.UserService.GetByUsername(user.Username)); + Assert.IsNull(ServiceContext.UserService.GetByUsername("notFound")); + } + [Test] public void Get_By_Object_Id() { diff --git a/src/Umbraco.Web/Search/ExamineEvents.cs b/src/Umbraco.Web/Search/ExamineEvents.cs index fc1d1c77d0..102038a7c0 100644 --- a/src/Umbraco.Web/Search/ExamineEvents.cs +++ b/src/Umbraco.Web/Search/ExamineEvents.cs @@ -50,13 +50,11 @@ namespace Umbraco.Web.Search if (registeredProviders == 0) return; - MediaService.Created += MediaServiceCreated; MediaService.Saved += MediaServiceSaved; MediaService.Deleted += MediaServiceDeleted; MediaService.Moved += MediaServiceMoved; MediaService.Trashed += MediaServiceTrashed; - ContentService.Created += ContentServiceCreated; ContentService.Saved += ContentServiceSaved; ContentService.Deleted += ContentServiceDeleted; ContentService.Moved += ContentServiceMoved; @@ -81,18 +79,6 @@ namespace Umbraco.Web.Search } } - [SecuritySafeCritical] - static void ContentServiceCreated(IContentService sender, Core.Events.NewEventArgs e) - { - IndexConent(e.Entity); - } - - [SecuritySafeCritical] - static void MediaServiceCreated(IMediaService sender, Core.Events.NewEventArgs e) - { - IndexMedia(e.Entity); - } - [SecuritySafeCritical] static void ContentServiceTrashed(IContentService sender, Core.Events.MoveEventArgs e) {