public EmailAddressFormattingResult FormatEmailAddress(IUserAreaDefinition userAreaDefinition, string emailAddress) { var emailAddressNormalizer = CreateServiceForUserArea <IEmailAddressNormalizer>(userAreaDefinition, typeof(IEmailAddressNormalizer <>)); var normalized = emailAddressNormalizer.NormalizeAsParts(emailAddress); if (normalized == null) { return(null); } var emailAddressUniquifier = CreateServiceForUserArea <IEmailAddressUniquifier>(userAreaDefinition, typeof(IEmailAddressUniquifier <>)); var uniquified = emailAddressUniquifier.UniquifyAsParts(normalized); if (uniquified == null) { return(null); } var result = new EmailAddressFormattingResult() { NormalizedEmailAddress = normalized.ToEmailAddress(), UniqueEmailAddress = uniquified.ToEmailAddress(), Domain = uniquified.Domain, }; return(result); }
private async Task <int?> GetEmailDomainIdAsync(EmailAddressFormattingResult emailAddress, IExecutionContext executionContext) { if (emailAddress == null) { return(null); } var emailDomainId = await _userStoredProcedures.AddEmailDomainIfNotExistsAsync( emailAddress.Domain.Name, emailAddress.Domain.IdnName, executionContext.ExecutionDate ); return(emailDomainId); }
private async Task ValidateNewEmailAsync( IUserAreaDefinition userArea, EmailAddressFormattingResult emailAddress, User user, IExecutionContext executionContext ) { var context = new EmailAddressValidationContext() { Email = emailAddress, ExecutionContext = executionContext, PropertyName = EMAIL_PROPERTY, UserAreaCode = userArea.UserAreaCode }; if (user.UserId > 0) { context.UserId = user.UserId; } await _emailAddressValidator.ValidateAsync(context); }
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); }