/// <summary>
        /// The ExecuteStrategy method.
        /// Contains the logic to validate domain models for creating an individual user.
        /// <para>
        /// @author: Jennifer Nguyen
        /// @updated: 03/13/2018
        /// </para>
        /// </summary>
        /// <returns>A boolean</returns>
        public ResponseDto <bool> ExecuteStrategy()
        {
            ResponseDto <bool> result;

            var validationWrappers = new List <IValidationWrapper>()
            {
                new ValidationWrapper <UserAccount>(_userAccount, "CreateUser", new UserAccountValidator()),
                new ValidationWrapper <PasswordSalt>(_passwordSalt, new PasswordSaltValidator()),
                new ValidationWrapper <UserProfile>(_userProfile, "CreateUser", new UserProfileValidator()),
                new ValidationWrapper <UserClaims>(_userClaims, new ClaimsValidator())
            };

            foreach (var securityQuestion in _securityQuestions)
            {
                validationWrappers.Add(new ValidationWrapper <SecurityQuestion>(securityQuestion, "CreateUser", _securityQuestionValidator));
            }

            foreach (var securityAnswerSalt in _securityAnswerSalts)
            {
                validationWrappers.Add(new ValidationWrapper <SecurityAnswerSalt>(securityAnswerSalt, _securityAnswerSaltValidator));
            }

            foreach (var validationWrapper in validationWrappers)
            {
                result = validationWrapper.ExecuteValidator();
                if (!result.Data)
                {
                    result.Error = GeneralErrorMessages.GENERAL_ERROR;
                    return(result);
                }
            }

            // Validate username and display name are not equal
            result = _userValidator.CheckIfUsernameEqualsDisplayName(_userAccount.Username, _userProfile.DisplayName);
            if (result.Data)
            {
                result.Error = GeneralErrorMessages.GENERAL_ERROR;
                return(result);
            }

            // Validate user does not exist
            result = _userValidator.CheckIfUserExists(_userAccount.Username);
            if (result.Data)
            {
                result.Error = GeneralErrorMessages.GENERAL_ERROR;
                return(result);
            }
            return(new ResponseDto <bool>()
            {
                Data = true
            });
        }
        public ResponseDto <bool> ExecuteStrategy()
        {
            // Will validate the username and new username
            var validationWrappers = new List <IValidationWrapper>()
            {
                new ValidationWrapper <EditUserDto>(_editUserDto, "EditUsername", _editUserDtoValidator),
            };

            // Goes through each validation in the validation wrapper.
            foreach (var validationWrapper in validationWrappers)
            {
                var result = validationWrapper.ExecuteValidator();
                if (!result.Data)
                {
                    return(result);
                }
            }
            // Validator to check if user exists
            var userValidator = new UserValidator();

            if (userValidator.CheckIfUserExists(_editUserDto.Username).Data == false)
            {
                return(new ResponseDto <bool>
                {
                    Data = false,
                    Error = ValidationErrorMessages.USER_DOES_NOT_EXIST
                });
            }

            //Check if new display name is null
            if (_editUserDto.NewDisplayName != null)
            {
                //Checks if username is equal to displayname
                if (userValidator.CheckIfUsernameEqualsDisplayName(_editUserDto.Username, _editUserDto.NewDisplayName).Data == true)
                {
                    return(new ResponseDto <bool>
                    {
                        Data = false,
                        Error = ValidationErrorMessages.USERNAME_IS_EQUAL_TO_DISPLAYNAME
                    });
                }
            }

            return(new ResponseDto <bool>()
            {
                Data = true
            });
        }
Beispiel #3
0
        /// <summary>
        /// The ExecuteStrategy method.
        /// Contains the logic to validate a data transfer object for creating an individual user.
        /// <para>
        /// @author: Jennifer Nguyen
        /// @updated: 03/20/2018
        /// </para>
        /// </summary>
        /// <returns>ResponseDto</returns>
        public ResponseDto <bool> ExecuteStrategy()
        {
            ResponseDto <bool> result;

            var validationWrappers = new List <IValidationWrapper>()
            {
                new ValidationWrapper <UserAccountDto>(_registerUserDto.UserAccountDto, "CreateUser", new UserAccountDtoValidator()),
                new ValidationWrapper <UserProfileDto>(_registerUserDto.UserProfileDto, "CreateUser", new UserProfileDtoValidator())
            };

            foreach (var securityQuestionDto in _registerUserDto.SecurityQuestionDtos)
            {
                validationWrappers.Add(new ValidationWrapper <SecurityQuestionDto>(securityQuestionDto, "CreateUser", _securityQuestionDtoValidator));
            }

            foreach (var validationWrapper in validationWrappers)
            {
                result = validationWrapper.ExecuteValidator();
                if (!result.Data)
                {
                    return(result);
                }
            }

            // Validate username and display name are not equal
            result = _userValidator.CheckIfUsernameEqualsDisplayName(_registerUserDto.UserAccountDto.Username, _registerUserDto.UserProfileDto.DisplayName);
            if (result.Data)
            {
                if (result.Error == null)
                {
                    result.Error = ValidationErrorMessages.USERNAME_IS_EQUAL_TO_DISPLAYNAME;
                }

                result.Data = false;
                return(result);
            }

            return(new ResponseDto <bool>()
            {
                Data = true
            });
        }
        /// <summary>
        /// The ExecuteStrategy method.
        /// Contains the logic to validate a data transfer object for creating an individual user.
        /// <para>
        /// @author: Jennifer Nguyen
        /// @updated: 03/20/2018
        /// </para>
        /// </summary>
        /// <returns>ResponseDto</returns>
        public ResponseDto <bool> ExecuteStrategy()
        {
            ResponseDto <bool> result;

            var validationWrappers = new List <IValidationWrapper>()
            {
                new ValidationWrapper <UserAccountDto>(_registerUserDto.UserAccountDto, "CreateUser", new UserAccountDtoValidator()),
                new ValidationWrapper <UserProfileDto>(_registerUserDto.UserProfileDto, "CreateUser", new UserProfileDtoValidator())
            };

            foreach (var securityQuestionDto in _registerUserDto.SecurityQuestionDtos)
            {
                validationWrappers.Add(new ValidationWrapper <SecurityQuestionDto>(securityQuestionDto, "CreateUser", _securityQuestionDtoValidator));
            }

            foreach (var validationWrapper in validationWrappers)
            {
                result = validationWrapper.ExecuteValidator();
                if (!result.Data)
                {
                    return(result);
                }
            }

            // Validate username and display name are not equal
            result = _userValidator.CheckIfUsernameEqualsDisplayName(_registerUserDto.UserAccountDto.Username, _registerUserDto.UserProfileDto.DisplayName);
            if (result.Data)
            {
                if (result.Error == null)
                {
                    result.Error = ValidationErrorMessages.USERNAME_IS_EQUAL_TO_DISPLAYNAME;
                }

                result.Data = false;
                return(result);
            }

            // Validate user does not exist
            result = _userValidator.CheckIfUserExists(_registerUserDto.UserAccountDto.Username);
            if (result.Data)
            {
                if (result.Error == null)
                {
                    result.Error = UserManagementErrorMessages.USER_EXISTS;
                }

                result.Data = false;
                return(result);
            }

            // Validate password has not been previously breached.
            result = _passwordValidator.IsPasswordValid(_registerUserDto.UserAccountDto.Password);
            if (!result.Data)
            {
                if (result.Error == null)
                {
                    result.Error = ValidationErrorMessages.PASSWORD_BREACHED;
                }

                return(result);
            }

            return(new ResponseDto <bool>()
            {
                Data = true
            });
        }