/// <summary>
 /// Gets the PasswordOptions Settings.
 /// </summary>
 /// <param name="settings">Settings for which PasswordOptions are required.</param>
 /// <returns>PasswordOptions object to be attached to settings.</returns>
 public Task <PasswordOptions> GetUserPasswordOptionsAsync(Settings settings)
 {
     return(Task.Factory.StartNew(() =>
     {
         if (ValidationService.Instance().Settings(settings))
         {
             return PasswordOptionsData.Instance().GetPasswordOptionsBySettings(settings);
         }
         else
         {
             return null;
         }
     }));
 }
Esempio n. 2
0
        /// <summary>
        /// Populates the User with Passwords and Settings.
        /// </summary>
        /// <param name="user">User to be populated.</param>
        /// <returns>User: User with its Passwords and Settings.</returns>
        public User PopulateUserData(User user)
        {
            if (ValidationService.Instance().User(user))
            {
                user.Passwords = CryptoService.Instance().DecryptUserPasswords(user, PasswordsData.Instance().GetUserPasswords(user));
                //user.Settings = (SettingsData.Instance().GetUserSettings(user) == null) ? Globals.Defaults.Settings : SettingsData.Instance().GetUserSettings(user);
                user.Settings = SettingsData.Instance().GetUserSettings(user);
                user.Settings.PasswordOptions = PasswordOptionsData.Instance().GetPasswordOptionsBySettings(user.Settings);

                return(user);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Populates the User with Passwords and Settings.
        /// </summary>
        /// <param name="user">User to be populated.</param>
        /// <returns>User: User with its Passwords and Settings.</returns>
        public Task <User> PopulateUserDataAsync(User user)
        {
            return(Task.Factory.StartNew(() =>
            {
                if (ValidationService.Instance().User(user))
                {
                    user.Passwords = CryptoService.Instance().DecryptUserPasswords(user, PasswordsData.Instance().GetUserPasswords(user));
                    user.Settings = SettingsData.Instance().GetUserSettings(user);
                    user.Settings.PasswordOptions = PasswordOptionsData.Instance().GetPasswordOptionsBySettings(user.Settings);

                    return user;
                }
                else
                {
                    return null;
                }
            }));
        }
 /// <summary>
 /// Updates the PasswordOptions for supplied User Settings
 /// </summary>
 /// <param name="user">User for Settings Access.</param>
 /// <param name="settings">Settings to be updated with PasswordOptions.</param>
 /// <param name="passwordOptions">PasswordOptions to be updated.</param>
 /// <returns>User: User with the updated Settings and PasswordOptions.</returns>
 public Task <User> UpdateUserPasswordOptionsAsync(User user, Settings settings, PasswordOptions passwordOptions)
 {
     return(Task.Factory.StartNew(() =>
     {
         if (ValidationService.Instance().User(user) && ValidationService.Instance().Settings(settings) && ValidationService.Instance().PasswordOptions(passwordOptions))
         {
             if (PasswordOptionsData.Instance().UpdatePasswordOptionsBySettings(settings, passwordOptions) > 0)
             {
                 user.Settings.PasswordOptions = passwordOptions;
                 return user;
             }
             else
             {
                 return null;
             }
         }
         else
         {
             return null;
         }
     }));
 }
        /// <summary>
        /// Generates a new Random Password
        /// </summary>
        /// <param name="user">User whose PasswordOptions settings is used.</param>
        /// <returns>String: Random Characters to be used as Password.</returns>
        public Task <string> GeneratePasswordAsync(User user)
        {
            return(Task.Factory.StartNew(() =>
            {
                PasswordOptions passwordOptions = null;

                if (ValidationService.Instance().User(user))
                {
                    passwordOptions = PasswordOptionsData.Instance().GetPasswordOptionsBySettings(user.Settings);
                }
                else
                {
                    passwordOptions = Globals.Defaults.PasswordOptions;
                }

                // Make a list of allowed characters.
                string allowed = "";

                if (passwordOptions.AllowLowercaseCharacters)
                {
                    allowed += passwordOptions.LowercaseCharacters;
                }
                if (passwordOptions.AllowUppercaseCharacters)
                {
                    allowed += passwordOptions.UppercaseCharacters;
                }
                if (passwordOptions.AllowNumberCharacters)
                {
                    allowed += passwordOptions.NumberCharacters;
                }
                if (passwordOptions.AllowSpecialCharacters)
                {
                    allowed += passwordOptions.SpecialCharacters;
                }
                if (passwordOptions.AllowUnderscoreCharacters)
                {
                    allowed += passwordOptions.UnderscoreCharacters;
                }
                if (passwordOptions.AllowSpaceCharacters)
                {
                    allowed += passwordOptions.SpaceCharacters;
                }
                if (passwordOptions.AllowOtherCharacters)
                {
                    allowed += passwordOptions.OtherCharacters;
                }

                Random random = new Random();

                int RequiredLength = random.Next(passwordOptions.MinimumCharacters, passwordOptions.MaximumCharacters);

                // Satisfy requirements.
                string password = "";

                password = GenerateRandomWord(RequiredLength - (int)(RequiredLength * 0.5));

                if (passwordOptions.RequireLowercaseCharacters &&
                    (password.IndexOfAny(passwordOptions.LowercaseCharacters.ToCharArray()) == -1))
                {
                    password += RandomCharacter(passwordOptions.LowercaseCharacters, random);
                }
                if (passwordOptions.RequireUppercaseCharacters &&
                    (password.IndexOfAny(passwordOptions.UppercaseCharacters.ToCharArray()) == -1))
                {
                    password = AddUpperCaseOnString(password);
                }
                if (passwordOptions.RequireNumberCharacters &&
                    (password.IndexOfAny(passwordOptions.NumberCharacters.ToCharArray()) == -1))
                {
                    password += RandomCharacter(passwordOptions.NumberCharacters, random);
                }
                if (passwordOptions.RequireSpecialCharacters &&
                    (password.IndexOfAny(passwordOptions.SpecialCharacters.ToCharArray()) == -1))
                {
                    password = RandomCharacter(passwordOptions.SpecialCharacters, random) + password;
                }
                if (passwordOptions.RequireUnderscoreCharacters &&
                    (password.IndexOfAny(passwordOptions.UnderscoreCharacters.ToCharArray()) == -1))
                {
                    password += passwordOptions.UnderscoreCharacters;
                }
                if (passwordOptions.RequireSpaceCharacters &&
                    (password.IndexOfAny(passwordOptions.SpaceCharacters.ToCharArray()) == -1))
                {
                    password += passwordOptions.SpaceCharacters;
                }
                if (passwordOptions.RequireOtherCharacters &&
                    (password.IndexOfAny(passwordOptions.OtherCharacters.ToCharArray()) == -1))
                {
                    password += passwordOptions.OtherCharacters;
                }

                password = GenerateRandomWord(RequiredLength - password.Length) + password;

                while (password.Length < RequiredLength)
                {
                    password += allowed.Substring(
                        random.Next(0, allowed.Length - 1), 1);
                }

                return password;
            }));
        }