using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using TBF.Resources; namespace TBF { /// /// Provides login dialog as well as user authorization using TBF.User.Authorize(...) /// (i.e. when DialogResult is OK, user was authorized). /// public partial class LoginDlg : Form { // Private fields string user; string password; Grp.GID requiredGroupMembership = Grp.GID.Invalid; bool noDatabase; /// /// Constructor. /// public LoginDlg() { InitializeComponent(); } /// /// Constructor with a predefined user. /// public LoginDlg(string predefinedUser) : this() { user = predefinedUser; userNameTextBox.Text = predefinedUser; } /// /// Constructor with 'no Database' flag. /// public LoginDlg(bool noDatabase) : this() { this.noDatabase = noDatabase; } /// /// Constructor when a specific group membership is required. /// public LoginDlg(Grp.GID requiredGroupMembership) : this() { this.requiredGroupMembership = requiredGroupMembership; } /// /// Constructor with a predefined user when a specific group membership is required. /// public LoginDlg(string predefinedUser, 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(); } /// /// Try to authorize the user when OK clicked. /// 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 == 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; } /// /// Cancel clicked, do not try to authorize. /// private void cancelButton_Click(object sender, EventArgs e) { if (requiredGroupMembership == Grp.GID.Invalid) { Entities.User.Unauthorize(); } DialogResult = DialogResult.Cancel; Close(); return; } } }