Example #1
0
        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);
        }
Example #4
0
        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);
        }