public static bool Authenticate(hMailServer.Application app, Settings.Server server)
{
string password = server.encryptedPassword;
if (password.Length > 0)
{
password = Encryption.Decrypt(password);
}
bool wrongPassword = false;
while (true)
{
if (!server.savePassword || wrongPassword)
{
// The user must input the password.
formEnterPassword dlg = new formEnterPassword();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
return false;
password = dlg.Password;
}
try
{
hMailServer.Account account = app.Authenticate(server.userName, password);
if (account == null)
{
// Wrong password, try again.
MessageBox.Show("The specified user name or password is incorrect.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK);
wrongPassword = true;
}
else
{
try
{
if (account.AdminLevel != eAdminLevel.hAdminLevelServerAdmin)
{
// Wrong password, try again.
MessageBox.Show("hMailServer server administration rights are required to run hMailServer Administrator.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
finally
{
Marshal.ReleaseComObject(account);
}
}
}
catch (Exception e)
{
// Wrong password, try again.
MessageBox.Show("The specified user name or password is incorrect." + Environment.NewLine + e.Message, EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK);
wrongPassword = true;
}
}
}