Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
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);
        }
        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);
        }