138 lines
3.7 KiB
C#
138 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using ResultsBrowser.Resources;
|
|
|
|
namespace ResultsBrowser.Forms
|
|
{
|
|
/// <summary>
|
|
/// Provides login dialog as well as user authorization using TBF.User.Authorize(...)
|
|
/// (i.e. when DialogResult is OK, user was authorized).
|
|
/// </summary>
|
|
public partial class LoginDlg : Form
|
|
{
|
|
// Private fields
|
|
string user;
|
|
string password;
|
|
Config.Grp.GID requiredGroupMembership = Config.Grp.GID.Invalid;
|
|
bool noDatabase;
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
public LoginDlg()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor with a predefined user.
|
|
/// </summary>
|
|
public LoginDlg(string predefinedUser)
|
|
: this()
|
|
{
|
|
user = predefinedUser;
|
|
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>
|
|
public LoginDlg(Config.Grp.GID requiredGroupMembership)
|
|
: this()
|
|
{
|
|
this.requiredGroupMembership = requiredGroupMembership;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor with a predefined user when a specific group membership is required.
|
|
/// </summary>
|
|
public LoginDlg(string predefinedUser, Config.Grp.GID requiredGroupMembership)
|
|
: this()
|
|
{
|
|
user = predefinedUser;
|
|
userNameTextBox.Text = predefinedUser;
|
|
this.requiredGroupMembership = requiredGroupMembership;
|
|
}
|
|
|
|
private void LoginDlg_Load(object sender, EventArgs e)
|
|
{
|
|
Text = Strings.User_Login;
|
|
label1.Text = Strings.Username;
|
|
label2.Text = Strings.Password;
|
|
okButton.Text = Strings.OkBtnText;
|
|
cancelButton.Text = Strings.CancelBtnText;
|
|
|
|
if (user == null) userNameTextBox.Select();
|
|
else passwordTextBox.Select();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Try to authorize the user when OK clicked.
|
|
/// </summary>
|
|
private void okButton_Click(object sender, EventArgs e)
|
|
{
|
|
user = userNameTextBox.Text;
|
|
password = passwordTextBox.Text;
|
|
|
|
bool authorized = Entities.User.IsPowerUser(user, password);
|
|
|
|
if (!authorized && !noDatabase)
|
|
{
|
|
Entities.User loadedUser = Entities.User.LoadUserByName(user);
|
|
if (loadedUser != null)
|
|
{
|
|
if (requiredGroupMembership == Config.Grp.GID.Invalid)
|
|
{
|
|
authorized = loadedUser.Authorize(user, password);
|
|
}
|
|
else
|
|
{
|
|
authorized = loadedUser.Authorize(user, password, requiredGroupMembership);
|
|
}
|
|
}
|
|
}
|
|
|
|
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;
|
|
return;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Cancel clicked, do not try to authorize.
|
|
/// </summary>
|
|
private void cancelButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (requiredGroupMembership == Config.Grp.GID.Invalid)
|
|
{
|
|
Entities.User.Unauthorize();
|
|
}
|
|
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
return;
|
|
}
|
|
}
|
|
}
|