public virtual void UpdatedUser(SyncUserFile user, IEnumerable <UserUpdate> changes) { _baseLogger.Info($"[U] User {user.User.UserName}"); foreach (var updatedProperty in changes) { var role = updatedProperty as UserRoleUpdate; if (role == null) { if (!updatedProperty.Deleted) { _baseLogger.Debug($"* [U] {updatedProperty.Property} updated from {updatedProperty.OriginalValue} to {updatedProperty.NewValue}."); } else { _baseLogger.Debug($"* [D] {updatedProperty.Property} was removed."); } } else { if (role.Removed) { _baseLogger.Debug($"* [D] {role.RoleName} role was removed."); } else { _baseLogger.Debug($"* [A] {role.RoleName} role was added."); } } } }
protected virtual void DeserializeUser(SyncUserFile serializedUser) { var changes = new List <UserUpdate>(); var syncUser = serializedUser.User; var missingRolesForUser = syncUser.Roles.FindAll(roleName => !Roles.RoleExists(roleName)); if (missingRolesForUser.Count > 0) { _logger.MissingRoles(serializedUser, missingRolesForUser.ToArray()); return; } bool addedUser; var existingUser = GetOrCreateUser(serializedUser, out addedUser); MembershipUser updatedUser = new MembershipUser( existingUser.ProviderName, syncUser.UserName, existingUser.ProviderUserKey, syncUser.Email, null, syncUser.Comment, syncUser.IsApproved, existingUser.IsLockedOut, syncUser.CreationDate, existingUser.LastLoginDate, existingUser.LastActivityDate, addedUser ? DateTime.UtcNow : existingUser.LastPasswordChangedDate, existingUser.LastLockoutDate); if (!addedUser) { if (!existingUser.Email.Equals(updatedUser.Email)) { changes.Add(new UserUpdate("Email", existingUser.Email, updatedUser.Email)); } if (!existingUser.Comment.Equals(updatedUser.Comment)) { changes.Add(new UserUpdate("Comment", existingUser.Comment, updatedUser.Comment)); } if (!existingUser.IsApproved.Equals(updatedUser.IsApproved)) { changes.Add(new UserUpdate("IsApproved", existingUser.IsApproved.ToString(), updatedUser.IsApproved.ToString())); } } Membership.UpdateUser(updatedUser); PasteProfileValues(updatedUser, syncUser, changes); PasteRoles(syncUser, User.FromName(serializedUser.User.UserName, true), addedUser, changes); if (changes.Count > 0 && !addedUser) { _logger.UpdatedUser(serializedUser, changes); } }
protected virtual string CreateNewUserPassword(SyncUserFile user) { var password = _syncConfiguration.DefaultPassword; if (password.Equals("random", StringComparison.OrdinalIgnoreCase)) { return Membership.GeneratePassword(32, 0); } if (password.Length < 8) throw new InvalidOperationException("I will not set the default user password to anything less than 8 characters. Change your userSyncConfiguration's defaultPassword setting to something more secure."); return password; }
protected virtual string CreateNewUserPassword(SyncUserFile user) { var password = _syncConfiguration.DefaultPassword; if (password.Equals("random", StringComparison.OrdinalIgnoreCase)) { return(Membership.GeneratePassword(32, 0)); } if (password.Length < _syncConfiguration.MinPasswordLength) { throw new InvalidOperationException($"I will not set the default user password to anything less than {_syncConfiguration.MinPasswordLength} characters. Change your userSyncConfiguration\'s defaultPassword setting to something more secure."); } return(password); }
protected virtual MembershipUser GetOrCreateUser(SyncUserFile user, out bool addedUser) { addedUser = false; var existingUser = Membership.GetUser(user.User.UserName); if (existingUser != null) { return(existingUser); } addedUser = true; _logger.AddedNewUser(user); return(Membership.CreateUser(user.User.UserName, CreateNewUserPassword(user))); }
public virtual void AddedNewUser(SyncUserFile user) { _baseLogger.Info($"[A] User {user.User.UserName}"); }
public virtual void MissingRoles(SyncUserFile user, string[] missingRoleNames) { _baseLogger.Error($"Error deserializing {user.User.UserName} user; some roles it is member of don't exist:{string.Join(", ", missingRoleNames)}."); }
protected virtual void DeserializeUser(SyncUserFile serializedUser) { var changes = new List<UserUpdate>(); var syncUser = serializedUser.User; var missingRolesForUser = syncUser.Roles.FindAll(roleName => !Roles.RoleExists(roleName)); if (missingRolesForUser.Count > 0) { _logger.MissingRoles(serializedUser, missingRolesForUser.ToArray()); return; } bool addedUser; var existingUser = GetOrCreateUser(serializedUser, out addedUser); var updatedUser = new MembershipUser(existingUser.ProviderName, syncUser.UserName, existingUser.ProviderUserKey, syncUser.Email, null, syncUser.Comment, syncUser.IsApproved, existingUser.IsLockedOut, syncUser.CreationDate, existingUser.LastLoginDate, existingUser.LastActivityDate, addedUser ? DateTime.UtcNow : existingUser.LastPasswordChangedDate, existingUser.LastLockoutDate); if (!addedUser) { if (existingUser.Email != null && !existingUser.Email.Equals(updatedUser.Email)) changes.Add(new UserUpdate("Email", existingUser.Email, updatedUser.Email)); if (existingUser.Comment != null && !existingUser.Comment.Equals(updatedUser.Comment)) changes.Add(new UserUpdate("Comment", existingUser.Comment, updatedUser.Comment)); if (!existingUser.IsApproved.Equals(updatedUser.IsApproved)) changes.Add(new UserUpdate("IsApproved", existingUser.IsApproved.ToString(), updatedUser.IsApproved.ToString())); if (!existingUser.CreationDate.Equals(updatedUser.CreationDate.ToUniversalTime())) changes.Add(new UserUpdate("CreationDate", existingUser.CreationDate.ToString(CultureInfo.InvariantCulture), updatedUser.CreationDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture) + " (UTC)")); } Membership.UpdateUser(updatedUser); PasteProfileValues(updatedUser, syncUser, changes); PasteRoles(syncUser, User.FromName(serializedUser.User.UserName, true), addedUser, changes); if (changes.Count > 0 && !addedUser) _logger.UpdatedUser(serializedUser, changes); }
protected virtual MembershipUser GetOrCreateUser(SyncUserFile user, out bool addedUser) { addedUser = false; var existingUser = Membership.GetUser(user.User.UserName); if (existingUser != null) return existingUser; addedUser = true; _logger.AddedNewUser(user); return Membership.CreateUser(user.User.UserName, CreateNewUserPassword(user)); }