Merge pull request #1447 from umbraco/temp-u4-8906

U4-8906 - optimize member perfs
This commit is contained in:
Warren Buckley
2016-09-15 15:14:34 +01:00
committed by GitHub

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,20 +287,21 @@ namespace Umbraco.Web.Models.Mapping
internal static IDictionary<string, bool> GetMemberGroupValue(string username)
{
var result = new Dictionary<string, bool>();
foreach (var role in Roles.GetAllRoles().Distinct())
{
var userRoles = username.IsNullOrWhiteSpace() ? null : Roles.GetRolesForUser(username);
// create a dictionary of all roles (except internal roles) + "false"
var result = 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;
}
}
}
.Where(x => x.StartsWith(Constants.Conventions.Member.InternalRolePrefix) == false)
.ToDictionary(x => x, x => false);
// if user has no roles, just return the dictionary
if (userRoles == null) return result;
// else update the dictionary to "true" for the user roles (except internal roles)
foreach (var userRole in userRoles.Where(x => x.StartsWith(Constants.Conventions.Member.InternalRolePrefix) == false))
result[userRole] = true;
return result;
}
@@ -318,7 +319,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 +332,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 +371,7 @@ namespace Umbraco.Web.Models.Mapping
isLockedOutProperty.Value = _localizedTextService.Localize("general/no");
}
return result;
return result;
}
else
{
@@ -386,10 +387,10 @@ namespace Umbraco.Web.Models.Mapping
isLockedOutProperty.Value = _localizedTextService.Localize("general/no");
}
return result;
return result;
}
}
}
@@ -433,7 +434,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 +445,12 @@ namespace Umbraco.Web.Models.Mapping
{Constants.Conventions.Member.IsLockedOut, umbracoProvider.LockPropertyTypeAlias},
{Constants.Conventions.Member.IsApproved, umbracoProvider.ApprovedPropertyTypeAlias},
{Constants.Conventions.Member.Comments, umbracoProvider.CommentPropertyTypeAlias}
};
};
}
}
}
}
}
}