From 4133574db04e3a44bb1e9ac1bea3d1886283709c Mon Sep 17 00:00:00 2001 From: Stephan Date: Fri, 26 Aug 2016 15:30:24 +0200 Subject: [PATCH] U4-8906 - optimize member perfs --- .../Models/Mapping/MemberModelMapper.cs | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs index cc677b4688..5a135eff2b 100644 --- a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs @@ -183,7 +183,7 @@ namespace Umbraco.Web.Models.Mapping var url = urlHelper.GetUmbracoApiService(controller => controller.GetTreeNode(display.Key.ToString("N"), null)); display.TreeNodeUrl = url; } - + var genericProperties = new List { new ContentPropertyDisplay @@ -234,7 +234,7 @@ namespace Umbraco.Web.Models.Mapping TabsAndPropertiesResolver.MapGenericProperties(member, display, localizedText, genericProperties); - + //check if there's an approval field var provider = membersProvider as global::umbraco.providers.members.UmbracoMembershipProvider; if (member.HasIdentity == false && provider != null) @@ -258,7 +258,7 @@ namespace Umbraco.Web.Models.Mapping /// /// /// If the membership provider installed is the umbraco membership provider, then we will allow changing the username, however if - /// the membership provider is a custom one, we cannot allow chaning the username because MembershipProvider's do not actually natively + /// the membership provider is a custom one, we cannot allow chaning the username because MembershipProvider's do not actually natively /// allow that. /// internal static ContentPropertyDisplay GetLoginProperty(IMemberService memberService, IMember member, MemberDisplay display, ILocalizedTextService localizedText) @@ -267,11 +267,11 @@ namespace Umbraco.Web.Models.Mapping { Alias = string.Format("{0}login", Constants.PropertyEditors.InternalGenericPropertiesPrefix), Label = localizedText.Localize("login"), - Value = display.Username + Value = display.Username }; var scenario = memberService.GetMembershipScenario(); - + //only allow editing if this is a new member, or if the membership provider is the umbraco one if (member.HasIdentity == false || scenario == MembershipScenario.NativeUmbraco) { @@ -287,18 +287,14 @@ namespace Umbraco.Web.Models.Mapping internal static IDictionary GetMemberGroupValue(string username) { + var userRoles = username.IsNullOrWhiteSpace() ? null : Roles.GetRolesForUser(username); var result = new Dictionary(); foreach (var role in Roles.GetAllRoles().Distinct()) { // if a role starts with __umbracoRole we won't show it as it's an internal role used for public access if (role.StartsWith(Constants.Conventions.Member.InternalRolePrefix) == false) { - result.Add(role, false); - if (username.IsNullOrWhiteSpace()) continue; - if (Roles.IsUserInRole(username, role)) - { - result[role] = true; - } + result.Add(role, userRoles != null && userRoles.Contains(role)); } } return result; @@ -318,7 +314,7 @@ namespace Umbraco.Web.Models.Mapping //remove all membership properties, these values are set with the membership provider. var exclude = defaultProps.Select(x => x.Value.Alias).ToArray(); - + return source.Properties .Where(x => exclude.Contains(x.Alias) == false) .Select(Mapper.Map); @@ -331,7 +327,7 @@ namespace Umbraco.Web.Models.Mapping /// /// /// This also ensures that the IsLocked out property is readonly when the member is not locked out - this is because - /// an admin cannot actually set isLockedOut = true, they can only unlock. + /// an admin cannot actually set isLockedOut = true, they can only unlock. /// internal class MemberTabsAndPropertiesResolver : TabsAndPropertiesResolver { @@ -370,7 +366,7 @@ namespace Umbraco.Web.Models.Mapping isLockedOutProperty.Value = _localizedTextService.Localize("general/no"); } - return result; + return result; } else { @@ -386,10 +382,10 @@ namespace Umbraco.Web.Models.Mapping isLockedOutProperty.Value = _localizedTextService.Localize("general/no"); } - return result; + return result; } - + } } @@ -433,7 +429,7 @@ namespace Umbraco.Web.Models.Mapping {Constants.Conventions.Member.IsLockedOut, Constants.Conventions.Member.IsLockedOut}, {Constants.Conventions.Member.IsApproved, Constants.Conventions.Member.IsApproved}, {Constants.Conventions.Member.Comments, Constants.Conventions.Member.Comments} - }; + }; } else { @@ -444,12 +440,12 @@ namespace Umbraco.Web.Models.Mapping {Constants.Conventions.Member.IsLockedOut, umbracoProvider.LockPropertyTypeAlias}, {Constants.Conventions.Member.IsApproved, umbracoProvider.ApprovedPropertyTypeAlias}, {Constants.Conventions.Member.Comments, umbracoProvider.CommentPropertyTypeAlias} - }; + }; } - + } - } + } } } \ No newline at end of file