public UsernameFormattingResult FormatUsername(IUserAreaDefinition userAreaDefinition, string username) { var usernameNormalizer = CreateServiceForUserArea <IUsernameNormalizer>(userAreaDefinition, typeof(IUsernameNormalizer <>)); var usernameUniquifier = CreateServiceForUserArea <IUsernameUniquifier>(userAreaDefinition, typeof(IUsernameUniquifier <>)); if (userAreaDefinition.UseEmailAsUsername) { var emailAddressNormalizer = CreateServiceForUserArea <IEmailAddressNormalizer>(userAreaDefinition, typeof(IEmailAddressNormalizer <>)); username = emailAddressNormalizer.Normalize(username); } var result = new UsernameFormattingResult(); result.NormalizedUsername = usernameNormalizer.Normalize(username); if (result.NormalizedUsername == null) { return(null); } result.UniqueUsername = usernameUniquifier.Uniquify(username); if (result.UniqueUsername == null) { return(null); } return(result); }
public UsernameFormattingResult FormatUsername(IUserAreaDefinition userAreaDefinition, EmailAddressFormattingResult emailAddress) { if (userAreaDefinition == null) { throw new ArgumentNullException(nameof(userAreaDefinition)); } if (!userAreaDefinition.UseEmailAsUsername) { throw new InvalidOperationException($"{nameof(FormatUsername)} can only be called with an email address if the user area supports using an email as a username."); } if (emailAddress == null) { return(null); } var usernameNormalizer = CreateServiceForUserArea <IUsernameNormalizer>(userAreaDefinition, typeof(IUsernameNormalizer <>)); var usernameUniquifier = CreateServiceForUserArea <IUsernameUniquifier>(userAreaDefinition, typeof(IUsernameUniquifier <>)); var result = new UsernameFormattingResult(); result.NormalizedUsername = usernameNormalizer.Normalize(emailAddress.NormalizedEmailAddress); if (result.NormalizedUsername == null) { return(null); } result.UniqueUsername = usernameUniquifier.Uniquify(emailAddress.NormalizedEmailAddress); if (result.UniqueUsername == null) { return(null); } return(result); }
private async Task <bool> UpdateUsernameAsync( IUserAreaDefinition userArea, UsernameFormattingResult username, User user, IExecutionContext executionContext ) { if (user.Username == username.NormalizedUsername && user.UniqueUsername == username.UniqueUsername) { return(false); } await ValidateNewUsernameAsync(userArea, username, user, executionContext); user.Username = username.NormalizedUsername; user.UniqueUsername = username.UniqueUsername; return(true); }
private async Task ValidateNewUsernameAsync( IUserAreaDefinition userArea, UsernameFormattingResult username, User user, IExecutionContext executionContext ) { var context = new UsernameValidationContext() { Username = username, ExecutionContext = executionContext, PropertyName = userArea.UseEmailAsUsername ? EMAIL_PROPERTY : USERNAME_PROPERTY, UserAreaCode = userArea.UserAreaCode }; if (user.UserId > 0) { context.UserId = user.UserId; } await _usernameValidator.ValidateAsync(context); }