diff --git a/src/Umbraco.Infrastructure/Security/MemberUserStore.cs b/src/Umbraco.Infrastructure/Security/MemberUserStore.cs index de4bbca050..6e08040de3 100644 --- a/src/Umbraco.Infrastructure/Security/MemberUserStore.cs +++ b/src/Umbraco.Infrastructure/Security/MemberUserStore.cs @@ -86,6 +86,7 @@ namespace Umbraco.Cms.Core.Security // re-assign id user.Id = UserIdToString(memberEntity.Id); + user.Key = memberEntity.Key; // [from backofficeuser] we have to remember whether Logins property is dirty, since the UpdateMemberProperties will reset it. // var isLoginsPropertyDirty = user.IsPropertyDirty(nameof(MembersIdentityUser.Logins)); diff --git a/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/EditProfile.cshtml b/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/EditProfile.cshtml index 9b5643d9c0..09954b3f8d 100644 --- a/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/EditProfile.cshtml +++ b/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/EditProfile.cshtml @@ -12,6 +12,8 @@ .CreateProfileModel() // If null or not set, this will redirect to the current page .WithRedirectUrl(null) + // Include editable custom properties on the form + .WithCustomProperties(true) .BuildForCurrentMemberAsync(); var success = TempData["FormSuccess"] != null; @@ -21,7 +23,7 @@ -@if(profileModel != null) +@if (profileModel != null) { if (success) { @@ -54,14 +56,17 @@ } - for (var i = 0; i < profileModel.MemberProperties.Count; i++) + @if (profileModel.MemberProperties != null) { -
- @Html.LabelFor(m => profileModel.MemberProperties[i].Value, profileModel.MemberProperties[i].Name) - - @Html.HiddenFor(m => profileModel.MemberProperties[i].Alias) - -
+ for (var i = 0; i < profileModel.MemberProperties.Count; i++) + { +
+ @Html.LabelFor(m => profileModel.MemberProperties[i].Value, profileModel.MemberProperties[i].Name) + + @Html.HiddenFor(m => profileModel.MemberProperties[i].Alias) + +
+ } } diff --git a/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/RegisterMember.cshtml b/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/RegisterMember.cshtml index 2b5cdd17f9..ca45ff5746 100644 --- a/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/RegisterMember.cshtml +++ b/src/Umbraco.Web.UI.NetCore/umbraco/PartialViewMacros/Templates/RegisterMember.cshtml @@ -17,7 +17,7 @@ .WithRedirectUrl(null) // Set to true if you want the member editable properties shown. // It will only displays properties marked as "Member can edit" on the "Info" tab of the Member Type. - .LookupProperties(true) + .WithCustomProperties(false) .Build(); var success = TempData["FormSuccess"] != null; @@ -71,8 +71,9 @@ else for (var i = 0; i < registerModel.MemberProperties.Count; i++) {
- + @Html.LabelFor(m => registerModel.MemberProperties[i].Value, registerModel.MemberProperties[i].Name) + @Html.HiddenFor(m => registerModel.MemberProperties[i].Alias)
} diff --git a/src/Umbraco.Web.Website/Models/ProfileModelBuilder.cs b/src/Umbraco.Web.Website/Models/ProfileModelBuilder.cs index 359d32704f..00d4cebd1e 100644 --- a/src/Umbraco.Web.Website/Models/ProfileModelBuilder.cs +++ b/src/Umbraco.Web.Website/Models/ProfileModelBuilder.cs @@ -15,6 +15,7 @@ namespace Umbraco.Cms.Web.Website.Models private readonly IMemberService _memberService; private readonly IHttpContextAccessor _httpContextAccessor; private string _redirectUrl; + private bool _lookupProperties; public ProfileModelBuilder( IMemberTypeService memberTypeService, @@ -33,6 +34,12 @@ namespace Umbraco.Cms.Web.Website.Models return this; } + public ProfileModelBuilder WithCustomProperties(bool lookupProperties) + { + _lookupProperties = lookupProperties; + return this; + } + public async Task BuildForCurrentMemberAsync() { IMemberManager memberManager = _httpContextAccessor.HttpContext?.RequestServices.GetRequiredService(); @@ -78,7 +85,10 @@ namespace Umbraco.Cms.Web.Website.Models throw new InvalidOperationException($"Could not find a member with key: {member.Key}."); } - model.MemberProperties = GetMemberPropertiesViewModel(memberType, persistedMember); + if (_lookupProperties) + { + model.MemberProperties = GetMemberPropertiesViewModel(memberType, persistedMember); + } return model; } diff --git a/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs b/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs index fbba8dd533..d2dfda227d 100644 --- a/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs +++ b/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs @@ -40,7 +40,7 @@ namespace Umbraco.Cms.Web.Website.Models return this; } - public RegisterModelBuilder LookupProperties(bool lookupProperties) + public RegisterModelBuilder WithCustomProperties(bool lookupProperties) { _lookupProperties = lookupProperties; return this;