public override async Task <IdentityResult> ValidateAsync(UserManager <AppUser> userManager, AppUser user, string password)
        {
            IdentityResult result = await base.ValidateAsync(userManager, user, password);

            List <IdentityError> errors = result.Succeeded ?
                                          new List <IdentityError>() : result.Errors.ToList();


            if (await usedPasswordsService.IsPreviouslyUsedPasswordAsync(user, password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsPreviouslyUsed",
                    Description = "این کلمه‌ی عبور پیشتر توسط شما استفاده شده‌است و تکراری می‌باشد."
                });
            }


            if (IsBanPassword(password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsNotSafe",
                    Description = "کلمه‌ی عبور وارد شده به سادگی قابل حدس زدن است."
                });
            }

            return(errors.Count == 0 ? IdentityResult.Success
            : IdentityResult.Failed(errors.ToArray()));
        }
        public override async Task <IdentityResult> ValidateAsync(UserManager <User> manager, User user, string password)
        {
            var errors = new List <IdentityError>();

            if (string.IsNullOrWhiteSpace(password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsNotSet",
                    Description = "لطفا کلمه‌ی عبور را تکمیل کنید."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (string.IsNullOrWhiteSpace(user?.UserName))
            {
                errors.Add(new IdentityError
                {
                    Code        = "UserNameIsNotSet",
                    Description = "لطفا نام کاربری را تکمیل کنید."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            // First use the built-in validator
            var result = await base.ValidateAsync(manager, user, password);

            errors = result.Succeeded ? new List <IdentityError>() : result.Errors.ToList();

            // Extending the built-in validator
            if (password.Contains(user.UserName, StringComparison.OrdinalIgnoreCase))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordContainsUserName",
                    Description = "کلمه‌ی عبور نمی‌تواند حاوی قسمتی از نام کاربری باشد."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (!isSafePasword(password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsNotSafe",
                    Description = "کلمه‌ی عبور وارد شده به سادگی قابل حدس زدن است."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (await _usedPasswordsService.IsPreviouslyUsedPasswordAsync(user, password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "IsPreviouslyUsedPassword",
                    Description = "لطفا کلمه‌ی عبور دیگری را انتخاب کنید. این کلمه‌ی عبور پیشتر توسط شما استفاده شده‌است و تکراری می‌باشد."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            return(!errors.Any() ? IdentityResult.Success : IdentityResult.Failed(errors.ToArray()));
        }
Ejemplo n.º 3
0
        public override async Task <IdentityResult> ValidateAsync(UserManager <AppUser> manager, AppUser user, string password)
        {
            var errors = new List <IdentityError>();

            if (string.IsNullOrWhiteSpace(password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsNotSet",
                    Description = "Please complete the password."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (string.IsNullOrWhiteSpace(user?.UserName))
            {
                errors.Add(new IdentityError
                {
                    Code        = "UserNameIsNotSet",
                    Description = "Please complete the username."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            // First use the built-in validator
            var result = await base.ValidateAsync(manager, user, password);

            errors = result.Succeeded ? new List <IdentityError>() : result.Errors.ToList();

            // Extending the built-in validator
            if (password.Contains(user.UserName, StringComparison.OrdinalIgnoreCase))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordContainsUserName",
                    Description = "The password can not contain your username."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (!isSafePasword(password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "PasswordIsNotSafe",
                    Description = "The password is too easy to guess."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            if (await _usedPasswordsService.IsPreviouslyUsedPasswordAsync(user, password))
            {
                errors.Add(new IdentityError
                {
                    Code        = "IsPreviouslyUsedPassword",
                    Description = "This password has been used previously.Please choose another one."
                });
                return(IdentityResult.Failed(errors.ToArray()));
            }

            return(!errors.Any() ? IdentityResult.Success : IdentityResult.Failed(errors.ToArray()));
        }