websitepanel/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSettingsPasswordSettings.ascx.cs
2015-04-28 05:10:48 -07:00

170 lines
No EOL
6.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal.ExchangeServer
{
public partial class OrganizationSettingsPasswordSettings : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID);
litOrganizationName.Text = org.OrganizationId;
BindSettings();
}
}
private void BindSettings()
{
var settings = ES.Services.Organizations.GetOrganizationPasswordSettings(PanelRequest.ItemID);
if (settings == null)
{
var defaultSettings = ES.Services.Users.GetUserSettings(PanelSecurity.LoggedUserId, UserSettings.EXCHANGE_POLICY);
BindDefaultSettings(defaultSettings[UserSettings.HOSTED_ORGANIZATION_PASSWORD_POLICY]);
}
else
{
BindSettings(settings);
}
ToggleLockoutControls(chkLockOutSettigns.Checked);
ToggleComplexityControls(chkPasswordComplexity.Checked);
}
private void BindDefaultSettings(string defaultSettings)
{
// parse settings
string[] parts = defaultSettings.Split(';');
txtMinimumLength.Text = parts[1];
txtMaximumLength.Text = parts[2];
txtMinimumUppercase.Text = parts[3];
txtMinimumNumbers.Text = parts[4];
txtMinimumSymbols.Text = parts[5];
chkNotEqualUsername.Checked = Utils.ParseBool(parts[6], false);
txtLockedOut.Text = parts[7];
txtEnforcePasswordHistory.Text = PasswordPolicyEditor.GetValueSafe(parts, 8, "0");
txtAccountLockoutDuration.Text = PasswordPolicyEditor.GetValueSafe(parts, 9, "0");
txtResetAccountLockout.Text = PasswordPolicyEditor.GetValueSafe(parts, 10, "0");
chkLockOutSettigns.Checked = PasswordPolicyEditor.GetValueSafe(parts, 11, false);
chkPasswordComplexity.Checked = PasswordPolicyEditor.GetValueSafe(parts, 12, true);
txtMaxPasswordAge.Text = PasswordPolicyEditor.GetValueSafe(parts, 13, "42");
}
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 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;
}
private bool SavePasswordSettings()
{
try
{
ES.Services.Organizations.UpdateOrganizationPasswordSettings(PanelRequest.ItemID, GetSettings());
}
catch (Exception ex)
{
ShowErrorMessage("ORANIZATIONSETTINGS_NOT_UPDATED", ex);
return false;
}
return true;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
{
return;
}
SavePasswordSettings();
}
private void ToggleLockoutControls(bool visible)
{
RowAccountLockoutDuration.Visible = visible;
RowLockedOut.Visible = visible;
RowResetAccountLockout.Visible = visible;
}
protected void chkLockOutSettigns_CheckedChanged(object sender, EventArgs e)
{
ToggleLockoutControls(chkLockOutSettigns.Checked);
}
private void ToggleComplexityControls(bool visible)
{
RowMinimumUppercase.Visible = visible;
RowMinimumNumbers.Visible = visible;
RowMinimumSymbols.Visible = visible;
}
protected void chkPasswordComplexity_CheckedChanged(object sender, EventArgs e)
{
ToggleComplexityControls(chkPasswordComplexity.Checked);
}
protected void btnSaveExit_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
{
return;
}
if (SavePasswordSettings())
{
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "organization_home", "SpaceID=" + PanelSecurity.PackageId));
}
}
}
}