public async Task ValidateAsync()

in src/Amazon.AspNetCore.Identity.Cognito/CognitoPasswordValidator.cs [38:83]


        public async Task<IdentityResult> ValidateAsync(UserManager<CognitoUser> manager, CognitoUser user, string password)
        {
            // Retrieve the password policy set by the user's user pool
            var passwordPolicy = await user.UserPool.GetPasswordPolicyTypeAsync().ConfigureAwait(false);

            var errorDescriber = new IdentityErrorDescriber();
            var errors = new List<IdentityError>();

            if (password is null)
                password = string.Empty;
            
            if (password.Length < passwordPolicy.MinimumLength)
            {
                errors.Add(errorDescriber.PasswordTooShort(passwordPolicy.MinimumLength ?? 0));
            }

            if (!password.Any(char.IsLower) && (passwordPolicy.RequireLowercase ?? false))
            {
                errors.Add(errorDescriber.PasswordRequiresLower());
            }

            if (!password.Any(char.IsUpper) && (passwordPolicy.RequireUppercase ?? false))
            {
                errors.Add(errorDescriber.PasswordRequiresUpper());
            }

            if (!password.Any(char.IsNumber) && (passwordPolicy.RequireNumbers ?? false))
            {
                errors.Add(errorDescriber.PasswordRequiresDigit());
            }

            var passwordContainsASymbol = password.IndexOfAny(CognitoSymbols) >= 0;
            if (!passwordContainsASymbol && (passwordPolicy.RequireSymbols ?? false))
            {
                errors.Add(errorDescriber.PasswordRequiresNonAlphanumeric());
            }

            if (errors.Count > 0)
            {
                return IdentityResult.Failed(errors.ToArray());
            }
            else
            {
                return IdentityResult.Success;
            }
        }