U4-8906 - optimize member perfs

This commit is contained in:
Stephan
2016-08-26 15:30:24 +02:00
parent be57692a62
commit 4133574db0

View File

@@ -183,7 +183,7 @@ namespace Umbraco.Web.Models.Mapping
var url = urlHelper.GetUmbracoApiService<MemberTreeController>(controller => controller.GetTreeNode(display.Key.ToString("N"), null));
display.TreeNodeUrl = url;
}
var genericProperties = new List<ContentPropertyDisplay>
{
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
/// <returns></returns>
/// <remarks>
/// 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.
/// </remarks>
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<string, bool> GetMemberGroupValue(string username)
{
var userRoles = username.IsNullOrWhiteSpace() ? null : Roles.GetRolesForUser(username);
var result = new Dictionary<string, bool>();
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<Property, ContentPropertyDto>);
@@ -331,7 +327,7 @@ namespace Umbraco.Web.Models.Mapping
/// </summary>
/// <remarks>
/// 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.
/// </remarks>
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}
};
};
}
}
}
}
}
}