public async Task ValidateAsync()

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


        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.Length < passwordPolicy.MinimumLength)
            {
                errors.Add(errorDescriber.PasswordTooShort(passwordPolicy.MinimumLength));
            }

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

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

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

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

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