private void BindSettings(OrganizationPasswordSettings settings)
        {
            txtMinimumLength.Text = settings.MinimumLength.ToString();
            txtMaximumLength.Text = settings.MaximumLength.ToString();
            txtMinimumUppercase.Text = settings.UppercaseLettersCount.ToString();
            txtMinimumNumbers.Text = settings.NumbersCount.ToString();
            txtMinimumSymbols.Text = settings.SymbolsCount.ToString();
            txtLockedOut.Text = settings.AccountLockoutThreshold.ToString();

            txtEnforcePasswordHistory.Text = settings.EnforcePasswordHistory.ToString();
            txtAccountLockoutDuration.Text = settings.AccountLockoutDuration.ToString();
            txtResetAccountLockout.Text = settings.ResetAccountLockoutCounterAfter.ToString();
            chkLockOutSettigns.Checked = settings.LockoutSettingsEnabled;
            chkPasswordComplexity.Checked = settings.PasswordComplexityEnabled;

            txtMaxPasswordAge.Text = settings.MaxPasswordAge.ToString();
        }
        private void UpdateFineGrainedPasswordPolicy(Runspace runspace, string psoName, OrganizationPasswordSettings settings)
        {
            var cmd = new Command("Set-ADFineGrainedPasswordPolicy");
            cmd.Parameters.Add("Identity", psoName);
            cmd.Parameters.Add("MinPasswordLength", settings.MinimumLength);
            cmd.Parameters.Add("PasswordHistoryCount", settings.EnforcePasswordHistory);
            cmd.Parameters.Add("ComplexityEnabled", false);
            cmd.Parameters.Add("ReversibleEncryptionEnabled", false);
            cmd.Parameters.Add("MaxPasswordAge", new TimeSpan(settings.MaxPasswordAge*24, 0, 0));

            if (settings.LockoutSettingsEnabled)
            {
                cmd.Parameters.Add("LockoutDuration", new TimeSpan(0, settings.AccountLockoutDuration, 0));
                cmd.Parameters.Add("LockoutThreshold", settings.AccountLockoutThreshold);
                cmd.Parameters.Add("LockoutObservationWindow", new TimeSpan(0, settings.ResetAccountLockoutCounterAfter, 0));
            }
            else
            {
                cmd.Parameters.Add("LockoutDuration", new TimeSpan(0));
                cmd.Parameters.Add("LockoutThreshold", 0);
                cmd.Parameters.Add("LockoutObservationWindow", 0);
            }

            ExecuteShellCommand(runspace, cmd);
        }
        public void ApplyPasswordSettings(string organizationId, OrganizationPasswordSettings settings)
        {
            HostedSolutionLog.LogStart("ApplyPasswordPolicy");

            Runspace runspace = null;

            var psoName = FormOrganizationPSOName(organizationId);

            try
            {
                runspace = OpenRunspace();

                if (!FineGrainedPasswordPolicyExist(runspace, psoName))
                {
                    CreateFineGrainedPasswordPolicy(runspace, organizationId, psoName, settings);
                }
                else
                {
                    UpdateFineGrainedPasswordPolicy(runspace, psoName, settings);
                }

                string groupPath = GetGroupPath(organizationId);

                SetFineGrainedPasswordPolicySubject(runspace, groupPath, psoName);

                if (settings.MaxPasswordAge == 0)
                {
                    SetPasswordNeverExpiresInFineGrainedPasswordPolicy(runspace, psoName);
                }
            }
            catch (Exception ex)
            {
                HostedSolutionLog.LogError(ex);
                throw;
            }
            finally
            {
                CloseRunspace(runspace);
                HostedSolutionLog.LogEnd("ApplyPasswordPolicy");
            }
        }
 /// <remarks/>
 public void ApplyPasswordSettingsAsync(string organizationId, OrganizationPasswordSettings passwordSettings, object userState) {
     if ((this.ApplyPasswordSettingsOperationCompleted == null)) {
         this.ApplyPasswordSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnApplyPasswordSettingsOperationCompleted);
     }
     this.InvokeAsync("ApplyPasswordSettings", new object[] {
                 organizationId,
                 passwordSettings}, this.ApplyPasswordSettingsOperationCompleted, userState);
 }
 /// <remarks/>
 public void ApplyPasswordSettingsAsync(string organizationId, OrganizationPasswordSettings passwordSettings) {
     this.ApplyPasswordSettingsAsync(organizationId, passwordSettings, null);
 }
 /// <remarks/>
 public System.IAsyncResult BeginApplyPasswordSettings(string organizationId, OrganizationPasswordSettings passwordSettings, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("ApplyPasswordSettings", new object[] {
                 organizationId,
                 passwordSettings}, callback, asyncState);
 }
 public void ApplyPasswordSettings(string organizationId, OrganizationPasswordSettings passwordSettings) {
     this.Invoke("ApplyPasswordSettings", new object[] {
                 organizationId,
                 passwordSettings});
 }
        private OrganizationPasswordSettings GetSettings()
        {
            var settings = new OrganizationPasswordSettings();

            settings.MinimumLength = Utils.ParseInt(txtMinimumLength.Text, 3);
            settings.MaximumLength = Utils.ParseInt(txtMaximumLength.Text, 7);
            settings.UppercaseLettersCount = Utils.ParseInt(txtMinimumUppercase.Text, 3);
            settings.NumbersCount = Utils.ParseInt(txtMinimumNumbers.Text, 3);
            settings.SymbolsCount = Utils.ParseInt(txtMinimumSymbols.Text, 3);
            settings.AccountLockoutThreshold = Utils.ParseInt(txtLockedOut.Text, 3);
            settings.EnforcePasswordHistory = Utils.ParseInt(txtEnforcePasswordHistory.Text, 3);
            settings.AccountLockoutDuration = Utils.ParseInt(txtAccountLockoutDuration.Text, 3);
            settings.ResetAccountLockoutCounterAfter = Utils.ParseInt(txtResetAccountLockout.Text, 3);

            settings.LockoutSettingsEnabled = chkLockOutSettigns.Checked;
            settings.PasswordComplexityEnabled =chkPasswordComplexity.Checked;

            settings.MaxPasswordAge = Utils.ParseInt(txtMaxPasswordAge.Text, 42);

            return settings;
        }
 /// <remarks/>
 public void UpdateOrganizationPasswordSettingsAsync(int itemId, OrganizationPasswordSettings settings, object userState) {
     if ((this.UpdateOrganizationPasswordSettingsOperationCompleted == null)) {
         this.UpdateOrganizationPasswordSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateOrganizationPasswordSettingsOperationCompleted);
     }
     this.InvokeAsync("UpdateOrganizationPasswordSettings", new object[] {
                 itemId,
                 settings}, this.UpdateOrganizationPasswordSettingsOperationCompleted, userState);
 }
 public void ApplyPasswordSettings(string organizationId, OrganizationPasswordSettings passwordSettings)
 {
     Organization.ApplyPasswordSettings(organizationId, passwordSettings);
 }
 /// <remarks/>
 public void UpdateOrganizationPasswordSettingsAsync(int itemId, OrganizationPasswordSettings settings) {
     this.UpdateOrganizationPasswordSettingsAsync(itemId, settings, null);
 }
 /// <remarks/>
 public System.IAsyncResult BeginUpdateOrganizationPasswordSettings(int itemId, OrganizationPasswordSettings settings, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("UpdateOrganizationPasswordSettings", new object[] {
                 itemId,
                 settings}, callback, asyncState);
 }
 public void UpdateOrganizationPasswordSettings(int itemId, OrganizationPasswordSettings settings) {
     this.Invoke("UpdateOrganizationPasswordSettings", new object[] {
                 itemId,
                 settings});
 }
        public void SetUserPolicy(OrganizationPasswordSettings settings)
        {
            int minimumUppercase;
            int minimumNumbers;
            int minimumSymbols;


            if (settings.PasswordComplexityEnabled)
            {
                minimumUppercase = settings.UppercaseLettersCount;
                minimumNumbers = settings.NumbersCount;
                minimumSymbols = settings.SymbolsCount;
            }
            else
            {
                minimumUppercase = 0;
                minimumNumbers = 0;
                minimumSymbols = 0;
            }

            PolicyValue = string.Join(";", true, settings.MinimumLength, settings.MaximumLength, minimumUppercase, minimumNumbers, minimumSymbols, true);

            ToggleControls();
        }
 public void UpdateOrganizationPasswordSettings(int itemId, OrganizationPasswordSettings settings)
 {
     OrganizationController.UpdateOrganizationPasswordSettings(itemId, settings);
 }