Build-in power users implemented

This commit is contained in:
Milan Hanajik
2015-02-20 03:58:14 +01:00
parent 6aa63e8277
commit 371b4a9fbb
9 changed files with 238 additions and 475 deletions
+33 -20
View File
@@ -19,6 +19,7 @@ namespace TBF
string user;
string password;
Grp.GID requiredGroupMembership = Grp.GID.Invalid;
bool noDatabase;
/// <summary>
/// Constructor.
@@ -38,6 +39,15 @@ namespace TBF
userNameTextBox.Text = predefinedUser;
}
/// <summary>
/// Constructor with 'no Database' flag.
/// </summary>
public LoginDlg(bool noDatabase)
: this()
{
this.noDatabase = noDatabase;
}
/// <summary>
/// Constructor when a specific group membership is required.
/// </summary>
@@ -78,28 +88,31 @@ namespace TBF
user = userNameTextBox.Text;
password = passwordTextBox.Text;
Entities.User loadedUser = Entities.User.LoadUserByName(user);
if (loadedUser != null)
{
bool authorized;
bool authorized = Entities.User.IsPowerUser(user, password);
if (requiredGroupMembership == Grp.GID.Invalid)
{
authorized = loadedUser.Authorize(user, password);
}
else
{
authorized = loadedUser.Authorize(user, password, requiredGroupMembership);
}
if (!authorized && !noDatabase)
{
Entities.User loadedUser = Entities.User.LoadUserByName(user);
if (loadedUser != null)
{
if (requiredGroupMembership == Grp.GID.Invalid)
{
authorized = loadedUser.Authorize(user, password);
}
else
{
authorized = loadedUser.Authorize(user, password, requiredGroupMembership);
}
}
}
if (authorized)
{
DialogResult = DialogResult.OK;
Close();
Program.MainWnd.UpdateUser();
return;
}
}
if (authorized)
{
DialogResult = DialogResult.OK;
Close();
if (Program.MainWnd != null) Program.MainWnd.UpdateUser();
return;
}
MessageBox.Show(Strings.Invalid_username_or_password, Strings.Error, MessageBoxButtons.OK);
DialogResult = DialogResult.None;