public void DefineMaps(IUmbracoMapper mapper) { mapper.Define <IUser, BackOfficeIdentityUser>( (source, context) => { var target = new BackOfficeIdentityUser(_globalSettings, source.Id, source.Groups); target.DisableChangeTracking(); return(target); }, (source, target, context) => { Map(source, target); target.ResetDirtyProperties(true); target.EnableChangeTracking(); }); mapper.Define <IMember, MemberIdentityUser>( (source, context) => { var target = new MemberIdentityUser(source.Id); target.DisableChangeTracking(); return(target); }, (source, target, context) => { Map(source, target); target.ResetDirtyProperties(true); target.EnableChangeTracking(); }); }
/// <summary> /// Used to construct a new instance without an identity /// </summary> public static MemberIdentityUser CreateNew(string username, string email, string memberTypeAlias, bool isApproved, string?name = null) { if (string.IsNullOrWhiteSpace(username)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(username)); } var user = new MemberIdentityUser(); user.DisableChangeTracking(); user.UserName = username; user.Email = email; user.MemberTypeAlias = memberTypeAlias; user.IsApproved = isApproved; user.Id = null !; user.HasIdentity = false; user.Name = name; user.EnableChangeTracking(); return(user); }
// Umbraco.Code.MapAll -Id -LockoutEnabled -PhoneNumber -PhoneNumberConfirmed -TwoFactorEnabled -ConcurrencyStamp -NormalizedEmail -NormalizedUserName -Roles private void Map(IMember source, MemberIdentityUser target) { target.Email = source.Email; target.UserName = source.Username; target.LastPasswordChangeDateUtc = source.LastPasswordChangeDate.ToUniversalTime(); target.LastLoginDateUtc = source.LastLoginDate.ToUniversalTime(); target.EmailConfirmed = source.EmailConfirmedDate.HasValue; target.Name = source.Name; target.AccessFailedCount = source.FailedPasswordAttempts; target.PasswordHash = GetPasswordHash(source.RawPasswordValue); target.PasswordConfig = source.PasswordConfiguration; target.IsApproved = source.IsApproved; target.SecurityStamp = source.SecurityStamp; target.LockoutEnd = source.IsLockedOut ? DateTime.MaxValue.ToUniversalTime() : (DateTime?)null; target.Comments = source.Comments; target.LastLockoutDateUtc = source.LastLockoutDate == DateTime.MinValue ? null : source.LastLockoutDate.ToUniversalTime(); target.CreatedDateUtc = source.CreateDate.ToUniversalTime(); target.Key = source.Key; target.MemberTypeAlias = source.ContentTypeAlias; // NB: same comments re AutoMapper as per BackOfficeUser }