using System.Collections.Generic; using System.Linq; using AutoMapper; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.Web.Models.Mapping { /// /// This ensures that the custom membership provider properties are not mapped - these property values are controller by the membership provider /// /// /// Because these properties don't exist on the form, if we don't remove them for this map we'll get validation errors when posting data /// internal class MemberDtoPropertiesResolver { public IEnumerable Resolve(IMember source) { var defaultProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs(); //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); } } }