diff --git a/src/Umbraco.Core/Services/IMembershipRoleService.cs b/src/Umbraco.Core/Services/IMembershipRoleService.cs index e0d1e21e7a..a00d7e1b7f 100644 --- a/src/Umbraco.Core/Services/IMembershipRoleService.cs +++ b/src/Umbraco.Core/Services/IMembershipRoleService.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Services where T : class, IMembershipUser { void AddRole(string roleName); - IEnumerable GetAllRolesTyped(); + IEnumerable GetAllRoles(); IEnumerable GetAllRoles(int memberId); IEnumerable GetAllRoles(string username); IEnumerable GetAllRolesIds(); diff --git a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs index 46968e81dc..b846d5467a 100644 --- a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs +++ b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Core.Services.Implement; +using Umbraco.Infrastructure.Services.Implement; namespace Umbraco.Web.Cache { diff --git a/src/Umbraco.Infrastructure/Compose/AuditEventsComponent.cs b/src/Umbraco.Infrastructure/Compose/AuditEventsComponent.cs index c085db2496..41c406065f 100644 --- a/src/Umbraco.Infrastructure/Compose/AuditEventsComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/AuditEventsComponent.cs @@ -11,7 +11,7 @@ using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Extensions; - +using Umbraco.Infrastructure.Services.Implement; using Umbraco.Net; namespace Umbraco.Core.Compose diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs index 918bdcb941..ca7ba6e479 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs @@ -9,12 +9,12 @@ using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.DependencyInjection; -using Umbraco.Core.Events; using Umbraco.Core.Hosting; using Umbraco.Core.Packaging; using Umbraco.Core.Routing; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; +using Umbraco.Infrastructure.Services.Implement; namespace Umbraco.Infrastructure.DependencyInjection { diff --git a/src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComponent.cs b/src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComponent.cs index cd7b7a1f39..4ad4d91283 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComponent.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/PropertyEditorsComponent.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; +using Umbraco.Infrastructure.Services.Implement; namespace Umbraco.Web.PropertyEditors { diff --git a/src/Umbraco.Infrastructure/Security/MembersUserStore.cs b/src/Umbraco.Infrastructure/Security/MembersUserStore.cs index c79e18c168..35816721c4 100644 --- a/src/Umbraco.Infrastructure/Security/MembersUserStore.cs +++ b/src/Umbraco.Infrastructure/Security/MembersUserStore.cs @@ -475,7 +475,7 @@ namespace Umbraco.Infrastructure.Security /// protected override Task> FindRoleAsync(string normalizedRoleName, CancellationToken cancellationToken) { - IMemberGroup group = _memberService.GetAllRolesTyped().SingleOrDefault(x => x.Name == normalizedRoleName); + IMemberGroup group = _memberService.GetAllRoles().SingleOrDefault(x => x.Name == normalizedRoleName); if (group == null) { return Task.FromResult((IdentityRole)null); diff --git a/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs b/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs index 52f2fe0836..794da8230e 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs @@ -2,16 +2,17 @@ using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Logging; -using Umbraco.Core.Composing; +using Umbraco.Core; using Umbraco.Core.Events; -using Umbraco.Core.Exceptions; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; +using Umbraco.Core.Services; +using Umbraco.Core.Services.Implement; -namespace Umbraco.Core.Services.Implement +namespace Umbraco.Infrastructure.Services.Implement { /// /// Represents the MemberService. @@ -928,24 +929,29 @@ namespace Umbraco.Core.Services.Implement scope.Complete(); } } - - /// - /// Returns a strongly typed list of all member groups - /// - /// - public IEnumerable GetAllRolesTyped() + /// + /// Returns a list of all member roles + /// + /// A list of member roles + + public IEnumerable GetAllRoles() { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); return _memberGroupRepository.GetMany().Select(x=>x).Distinct(); } } + /// + /// Returns a list of all member roles for a given member ID + /// + /// + /// A list of member roles public IEnumerable GetAllRoles(int memberId) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); var result = _memberGroupRepository.GetMemberGroupsForMember(memberId); @@ -955,17 +961,17 @@ namespace Umbraco.Core.Services.Implement public IEnumerable GetAllRoles(string username) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); - var result = _memberGroupRepository.GetMemberGroupsForMember(username); + IEnumerable result = _memberGroupRepository.GetMemberGroupsForMember(username); return result.Select(x => x.Name).Distinct(); } } public IEnumerable GetAllRolesIds() { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); return _memberGroupRepository.GetMany().Select(x => x.Id).Distinct(); @@ -974,27 +980,27 @@ namespace Umbraco.Core.Services.Implement public IEnumerable GetAllRolesIds(int memberId) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); - var result = _memberGroupRepository.GetMemberGroupsForMember(memberId); + IEnumerable result = _memberGroupRepository.GetMemberGroupsForMember(memberId); return result.Select(x => x.Id).Distinct(); } } public IEnumerable GetAllRolesIds(string username) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); - var result = _memberGroupRepository.GetMemberGroupsForMember(username); + IEnumerable result = _memberGroupRepository.GetMemberGroupsForMember(username); return result.Select(x => x.Id).Distinct(); } } public IEnumerable GetMembersInRole(string roleName) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); return _memberRepository.GetByMemberGroup(roleName); @@ -1003,7 +1009,7 @@ namespace Umbraco.Core.Services.Implement public IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.MemberTree); return _memberRepository.FindMembersInRole(roleName, usernameToMatch, matchType); @@ -1012,71 +1018,66 @@ namespace Umbraco.Core.Services.Implement public bool DeleteRole(string roleName, bool throwIfBeingUsed) { - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); if (throwIfBeingUsed) { // get members in role - var membersInRole = _memberRepository.GetByMemberGroup(roleName); + IEnumerable membersInRole = _memberRepository.GetByMemberGroup(roleName); if (membersInRole.Any()) + { throw new InvalidOperationException("The role " + roleName + " is currently assigned to members"); + } } - var query = Query().Where(g => g.Name == roleName); - var found = _memberGroupRepository.Get(query).ToArray(); + IQuery query = Query().Where(g => g.Name == roleName); + IMemberGroup[] found = _memberGroupRepository.Get(query).ToArray(); - foreach (var memberGroup in found) + foreach (IMemberGroup memberGroup in found) + { _memberGroupService.Delete(memberGroup); + } scope.Complete(); return found.Length > 0; } } - public void AssignRole(string username, string roleName) - { - AssignRoles(new[] { username }, new[] { roleName }); - } + public void AssignRole(string username, string roleName) => AssignRoles(new[] { username }, new[] { roleName }); public void AssignRoles(string[] usernames, string[] roleNames) { - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); - var ids = _memberGroupRepository.GetMemberIds(usernames); + int[] ids = _memberGroupRepository.GetMemberIds(usernames); _memberGroupRepository.AssignRoles(ids, roleNames); scope.Events.Dispatch(AssignedRoles, this, new RolesEventArgs(ids, roleNames), nameof(AssignedRoles)); scope.Complete(); } } - public void DissociateRole(string username, string roleName) - { - DissociateRoles(new[] { username }, new[] { roleName }); - } + public void DissociateRole(string username, string roleName) => DissociateRoles(new[] { username }, new[] { roleName }); public void DissociateRoles(string[] usernames, string[] roleNames) { - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); - var ids = _memberGroupRepository.GetMemberIds(usernames); + int[] ids = _memberGroupRepository.GetMemberIds(usernames); _memberGroupRepository.DissociateRoles(ids, roleNames); scope.Events.Dispatch(RemovedRoles, this, new RolesEventArgs(ids, roleNames), nameof(RemovedRoles)); scope.Complete(); } } - public void AssignRole(int memberId, string roleName) - { - AssignRoles(new[] { memberId }, new[] { roleName }); - } + public void AssignRole(int memberId, string roleName) => AssignRoles(new[] { memberId }, new[] { roleName }); public void AssignRoles(int[] memberIds, string[] roleNames) { - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); _memberGroupRepository.AssignRoles(memberIds, roleNames); @@ -1085,14 +1086,11 @@ namespace Umbraco.Core.Services.Implement } } - public void DissociateRole(int memberId, string roleName) - { - DissociateRoles(new[] { memberId }, new[] { roleName }); - } + public void DissociateRole(int memberId, string roleName) => DissociateRoles(new[] { memberId }, new[] { roleName }); public void DissociateRoles(int[] memberIds, string[] roleNames) { - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); _memberGroupRepository.DissociateRoles(memberIds, roleNames); @@ -1105,10 +1103,7 @@ namespace Umbraco.Core.Services.Implement #region Private Methods - private void Audit(AuditType type, int userId, int objectId, string message = null) - { - _auditRepository.Save(new AuditItem(objectId, type, userId, ObjectTypes.GetName(UmbracoObjectTypes.Member), message)); - } + private void Audit(AuditType type, int userId, int objectId, string message = null) => _auditRepository.Save(new AuditItem(objectId, type, userId, ObjectTypes.GetName(UmbracoObjectTypes.Member), message)); #endregion @@ -1163,12 +1158,15 @@ namespace Umbraco.Core.Services.Implement /// public MemberExportModel ExportMember(Guid key) { - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { - var query = Query().Where(x => x.Key == key); - var member = _memberRepository.Get(query).FirstOrDefault(); + IQuery query = Query().Where(x => x.Key == key); + IMember member = _memberRepository.Get(query).FirstOrDefault(); - if (member == null) return null; + if (member == null) + { + return null; + } var model = new MemberExportModel { @@ -1192,11 +1190,14 @@ namespace Umbraco.Core.Services.Implement private static IEnumerable GetPropertyExportItems(IMember member) { - if (member == null) throw new ArgumentNullException(nameof(member)); + if (member == null) + { + throw new ArgumentNullException(nameof(member)); + } var exportProperties = new List(); - foreach (var property in member.Properties) + foreach (IProperty property in member.Properties) { var propertyExportModel = new MemberExportProperty { @@ -1224,15 +1225,14 @@ namespace Umbraco.Core.Services.Implement public void DeleteMembersOfType(int memberTypeId) { // note: no tree to manage here - - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(Constants.Locks.MemberTree); // TODO: What about content that has the contenttype as part of its composition? - var query = Query().Where(x => x.ContentTypeId == memberTypeId); + IQuery query = Query().Where(x => x.ContentTypeId == memberTypeId); - var members = _memberRepository.Get(query).ToArray(); + IMember[] members = _memberRepository.Get(query).ToArray(); var deleteEventArgs = new DeleteEventArgs(members); if (scope.Events.DispatchCancelable(Deleting, this, deleteEventArgs)) @@ -1241,43 +1241,58 @@ namespace Umbraco.Core.Services.Implement return; } - foreach (var member in members) + foreach (IMember member in members) { // delete media // triggers the deleted event (and handles the files) DeleteLocked(scope, member); } + scope.Complete(); } } private IMemberType GetMemberType(IScope scope, string memberTypeAlias) { - if (memberTypeAlias == null) throw new ArgumentNullException(nameof(memberTypeAlias)); - if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias)); + if (memberTypeAlias == null) + { + throw new ArgumentNullException(nameof(memberTypeAlias)); + } + + if (string.IsNullOrWhiteSpace(memberTypeAlias)) + { + throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias)); + } scope.ReadLock(Constants.Locks.MemberTypes); - var memberType = _memberTypeRepository.Get(memberTypeAlias); + IMemberType memberType = _memberTypeRepository.Get(memberTypeAlias); if (memberType == null) + { throw new Exception($"No MemberType matching the passed in Alias: '{memberTypeAlias}' was found"); // causes rollback + } return memberType; } private IMemberType GetMemberType(string memberTypeAlias) { - if (memberTypeAlias == null) throw new ArgumentNullException(nameof(memberTypeAlias)); - if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias)); + if (memberTypeAlias == null) + { + throw new ArgumentNullException(nameof(memberTypeAlias)); + } - using (var scope = ScopeProvider.CreateScope(autoComplete: true)) + if (string.IsNullOrWhiteSpace(memberTypeAlias)) + { + throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias)); + } + + using (IScope scope = ScopeProvider.CreateScope(autoComplete: true)) { return GetMemberType(scope, memberTypeAlias); } } - - #endregion } } diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs index a286b0ec42..59ae47a0f9 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs @@ -12,6 +12,7 @@ using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.PropertyEditors; +using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Tests.Common; using Umbraco.Tests.Common.Builders; @@ -28,6 +29,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services public class MemberServiceTests : UmbracoIntegrationTest { private IMemberTypeService MemberTypeService => GetRequiredService(); + private IMemberService MemberService => GetRequiredService(); [SetUp] @@ -64,11 +66,11 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services [Test] public void Can_Get_By_Username() { - var memberType = MemberTypeService.Get("member"); + IMemberType memberType = MemberTypeService.Get("member"); IMember member = new Member("xname", "xemail", "xusername", "xrawpassword", memberType, true); MemberService.Save(member); - var member2 = MemberService.GetByUsername(member.Username); + IMember member2 = MemberService.GetByUsername(member.Username); Assert.IsNotNull(member2); Assert.AreEqual(member.Email, member2.Email); @@ -77,8 +79,8 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services [Test] public void Can_Set_Last_Login_Date() { - var now = DateTime.Now; - var memberType = MemberTypeService.Get("member"); + DateTime now = DateTime.Now; + IMemberType memberType = MemberTypeService.Get("member"); IMember member = new Member("xname", "xemail", "xusername", "xrawpassword", memberType, true) { LastLoginDate = now, @@ -86,7 +88,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services }; MemberService.Save(member); - var newDate = now.AddDays(10); + DateTime newDate = now.AddDays(10); MemberService.SetLastLogin(member.Username, newDate); //re-get @@ -99,7 +101,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services [Test] public void Can_Create_Member_With_Properties() { - var memberType = MemberTypeService.Get("member"); + IMemberType memberType = MemberTypeService.Get("member"); IMember member = new Member("xname", "xemail", "xusername", "xrawpassword", memberType, true); MemberService.Save(member); @@ -111,7 +113,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services var publishedSnapshotAccessor = new TestPublishedSnapshotAccessor(); var variationContextAccessor = new TestVariationContextAccessor(); - var pmember = PublishedMember.Create(member, pmemberType, false, publishedSnapshotAccessor, variationContextAccessor, GetRequiredService()); + IPublishedContent pmember = PublishedMember.Create(member, pmemberType, false, publishedSnapshotAccessor, variationContextAccessor, GetRequiredService()); // contains the umbracoMember... properties created when installing, on the member type // contains the other properties, that PublishedContentType adds (BuiltinMemberProperties) @@ -142,7 +144,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services Assert.IsTrue(properties.Select(x => x.Alias).ContainsAll(aliases)); - var email = properties[aliases.IndexOf(nameof(IMember.Email))]; + IPublishedProperty email = properties[aliases.IndexOf(nameof(IMember.Email))]; Assert.AreEqual("xemail", email.GetSourceValue()); } @@ -155,7 +157,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.Save(member); Assert.AreNotEqual(0, member.Id); - var foundMember = MemberService.GetById(member.Id); + IMember foundMember = MemberService.GetById(member.Id); Assert.IsNotNull(foundMember); Assert.AreEqual("test@test.com", foundMember.Email); } @@ -169,7 +171,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.Save(member); Assert.AreNotEqual(0, member.Id); - var foundMember = MemberService.GetById(member.Id); + IMember foundMember = MemberService.GetById(member.Id); Assert.IsNotNull(foundMember); Assert.AreEqual("test@test.marketing", foundMember.Email); } @@ -179,7 +181,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services { MemberService.AddRole("MyTestRole"); - IEnumerable found = MemberService.GetAllRolesTyped(); + IEnumerable found = MemberService.GetAllRoles(); Assert.AreEqual(1, found.Count()); Assert.AreEqual("MyTestRole", found.Single()); @@ -191,7 +193,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole"); MemberService.AddRole("MyTestRole"); - IEnumerable found = MemberService.GetAllRolesTyped(); + IEnumerable found = MemberService.GetAllRoles(); Assert.AreEqual(1, found.Count()); Assert.AreEqual("MyTestRole", found.Single()); @@ -204,19 +206,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole2"); MemberService.AddRole("MyTestRole3"); - IEnumerable found = MemberService.GetAllRolesTyped(); - - Assert.AreEqual(3, found.Count()); - } - - [Test] - public void Can_Get_All_Roles_Typed() - { - MemberService.AddRole("MyTestRole1"); - MemberService.AddRole("MyTestRole2"); - MemberService.AddRole("MyTestRole3"); - - var found = MemberService.GetAllRolesTyped(); + IEnumerable found = MemberService.GetAllRoles(); Assert.AreEqual(3, found.Count()); } @@ -228,10 +218,11 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole2"); MemberService.AddRole("MyTestRole3"); - var found = MemberService.GetAllRolesIds(); + IEnumerable found = MemberService.GetAllRolesIds(); Assert.AreEqual(3, found.Count()); } + [Test] public void Can_Get_All_Roles_By_Member_Id() { @@ -245,11 +236,12 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole3"); MemberService.AssignRoles(new[] { member.Id }, new[] { "MyTestRole1", "MyTestRole2" }); - var memberRoles = MemberService.GetAllRoles(member.Id); + IEnumerable memberRoles = MemberService.GetAllRoles(member.Id); Assert.AreEqual(2, memberRoles.Count()); } + [Test] public void Can_Get_All_Roles_Ids_By_Member_Id() { @@ -263,11 +255,12 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole3"); MemberService.AssignRoles(new[] { member.Id }, new[] { "MyTestRole1", "MyTestRole2" }); - var memberRoles = MemberService.GetAllRolesIds(member.Id); + IEnumerable memberRoles = MemberService.GetAllRolesIds(member.Id); Assert.AreEqual(2, memberRoles.Count()); } + [Test] public void Can_Get_All_Roles_By_Member_Username() { @@ -284,10 +277,10 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.AddRole("MyTestRole3"); MemberService.AssignRoles(new[] { member.Id, member2.Id }, new[] { "MyTestRole1", "MyTestRole2" }); - var memberRoles = MemberService.GetAllRoles("test"); + IEnumerable memberRoles = MemberService.GetAllRoles("test"); Assert.AreEqual(2, memberRoles.Count()); - var memberRoles2 = MemberService.GetAllRoles("test2@test.com"); + IEnumerable memberRoles2 = MemberService.GetAllRoles("test2@test.com"); Assert.AreEqual(2, memberRoles2.Count()); } @@ -298,7 +291,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services MemberService.DeleteRole("MyTestRole1", false); - IEnumerable memberRoles = MemberService.GetAllRolesTyped(); + IEnumerable memberRoles = MemberService.GetAllRoles(); Assert.AreEqual(0, memberRoles.Count()); } @@ -322,7 +315,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services { MemberService.AddRole("MyTestRole1"); int roleId; - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { roleId = scope.Database.ExecuteScalar("SELECT id from umbracoNode where [text] = 'MyTestRole1'"); scope.Complete(); @@ -330,19 +323,19 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); MemberTypeService.Save(memberType); - var member1 = MemberBuilder.CreateSimpleMember(memberType, "test1", "test1@test.com", "pass", "test1"); + Member member1 = MemberBuilder.CreateSimpleMember(memberType, "test1", "test1@test.com", "pass", "test1"); MemberService.Save(member1); - var member2 = MemberBuilder.CreateSimpleMember(memberType, "test2", "test2@test.com", "pass", "test2"); + Member member2 = MemberBuilder.CreateSimpleMember(memberType, "test2", "test2@test.com", "pass", "test2"); MemberService.Save(member2); - using (var scope = ScopeProvider.CreateScope()) + using (IScope scope = ScopeProvider.CreateScope()) { scope.Database.Insert(new Member2MemberGroupDto { MemberGroup = roleId, Member = member1.Id }); scope.Database.Insert(new Member2MemberGroupDto { MemberGroup = roleId, Member = member2.Id }); scope.Complete(); } - var membersInRole = MemberService.GetMembersInRole("MyTestRole1"); + IEnumerable membersInRole = MemberService.GetMembersInRole("MyTestRole1"); Assert.AreEqual(2, membersInRole.Count()); } diff --git a/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs b/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs index 5efea5a1ca..12622bf4f6 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs @@ -26,6 +26,7 @@ using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; using Umbraco.Extensions; using Umbraco.Infrastructure.Security; +using Umbraco.Infrastructure.Services.Implement; using Umbraco.Web.BackOffice.Filters; using Umbraco.Web.BackOffice.ModelBinders; using Umbraco.Web.Common.Attributes; diff --git a/src/Umbraco.Web/Security/Providers/MembersRoleProvider.cs b/src/Umbraco.Web/Security/Providers/MembersRoleProvider.cs index da41838131..0637b08621 100644 --- a/src/Umbraco.Web/Security/Providers/MembersRoleProvider.cs +++ b/src/Umbraco.Web/Security/Providers/MembersRoleProvider.cs @@ -48,7 +48,7 @@ namespace Umbraco.Web.Security.Providers /// /// Member role name /// True if member role exists, otherwise false - public override bool RoleExists(string roleName) => _roleService.GetAllRolesTyped().Any(x => x.Name == roleName); + public override bool RoleExists(string roleName) => _roleService.GetAllRoles().Any(x => x.Name == roleName); public override void AddUsersToRoles(string[] usernames, string[] roleNames) { @@ -69,7 +69,7 @@ namespace Umbraco.Web.Security.Providers /// Gets all the member roles /// /// A list of member roles - public override string[] GetAllRoles() => _roleService.GetAllRolesTyped().Select(x => x.Name).ToArray(); + public override string[] GetAllRoles() => _roleService.GetAllRoles().Select(x => x.Name).ToArray(); public override string[] FindUsersInRole(string roleName, string usernameToMatch) {