diff --git a/Authorization.cs b/Authorization.cs
index 561041b..81f550d 100644
--- a/Authorization.cs
+++ b/Authorization.cs
@@ -13,7 +13,7 @@ namespace AwesomeEmailExtractor
{
SqliteCommand command = new SqliteCommand();
command.Connection = Globals.db;
- command.CommandText = "SELECT * FROM users WHERE login = @login AND password = @password";
+ command.CommandText = "SELECT id, login, role_id FROM users WHERE login = @login AND password = @password";
SqliteParameter loginParam = new SqliteParameter("@login", login);
command.Parameters.Add(loginParam);
@@ -25,7 +25,7 @@ namespace AwesomeEmailExtractor
while (reader.Read())
{
- return new User(reader.GetInt32(0), reader.GetString(1), (UserRoles)reader.GetInt32(1));
+ return new User(reader.GetInt32(0), reader.GetString(1), (UserRoles)reader.GetInt32(2));
}
throw new Exception("Пользователь не найден!");
@@ -87,6 +87,32 @@ namespace AwesomeEmailExtractor
Role = role;
}
+ public void Delete()
+ {
+ SqliteCommand command = new SqliteCommand();
+ command.Connection = Globals.db;
+ command.CommandText = "DELETE FROM users WHERE id = @id;";
+
+ SqliteParameter idParam = new SqliteParameter("@id", ID);
+ command.Parameters.Add(idParam);
+
+ command.ExecuteNonQuery();
+ }
+
+ public void ChangePassword(string password)
+ {
+ SqliteCommand command = new SqliteCommand();
+ command.Connection = Globals.db;
+ command.CommandText = "UPDATE users SET password = @password WHERE id = @id;";
+
+ SqliteParameter idParam = new SqliteParameter("@id", ID);
+ command.Parameters.Add(idParam);
+
+ SqliteParameter passwordParam = new SqliteParameter("@password", Authorization.EncryptPassword(password));
+ command.Parameters.Add(passwordParam);
+
+ command.ExecuteNonQuery();
+ }
}
public class AdminUtils
diff --git a/AwesomeEmailExtractor.csproj b/AwesomeEmailExtractor.csproj
index e634b53..d078b5e 100644
--- a/AwesomeEmailExtractor.csproj
+++ b/AwesomeEmailExtractor.csproj
@@ -101,6 +101,12 @@
RegistrationForm.cs
+
+ Form
+
+
+ SettingsForm.cs
+
AuthorizationForm.cs
@@ -116,6 +122,9 @@
True
Resources.resx
+
+ SettingsForm.cs
+
RegistrationForm.cs
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 8ce0ef9..f949bab 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -36,6 +36,10 @@
this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.аккаунтToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.administrationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resultStatusStrip.SuspendLayout();
this.menuStrip1.SuspendLayout();
@@ -112,6 +116,7 @@
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
+ this.аккаунтToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
@@ -125,6 +130,36 @@
this.fileToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
this.fileToolStripMenuItem.Text = "Файл";
//
+ // аккаунтToolStripMenuItem
+ //
+ this.аккаунтToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.settingsToolStripMenuItem,
+ this.administrationToolStripMenuItem,
+ this.exitToolStripMenuItem});
+ this.аккаунтToolStripMenuItem.Name = "аккаунтToolStripMenuItem";
+ this.аккаунтToolStripMenuItem.Size = new System.Drawing.Size(63, 20);
+ this.аккаунтToolStripMenuItem.Text = "Аккаунт";
+ //
+ // settingsToolStripMenuItem
+ //
+ this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
+ this.settingsToolStripMenuItem.Size = new System.Drawing.Size(189, 22);
+ this.settingsToolStripMenuItem.Text = "Настройки";
+ this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click);
+ //
+ // administrationToolStripMenuItem
+ //
+ this.administrationToolStripMenuItem.Name = "administrationToolStripMenuItem";
+ this.administrationToolStripMenuItem.Size = new System.Drawing.Size(189, 22);
+ this.administrationToolStripMenuItem.Text = "Администрирование";
+ //
+ // exitToolStripMenuItem
+ //
+ this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+ this.exitToolStripMenuItem.Size = new System.Drawing.Size(189, 22);
+ this.exitToolStripMenuItem.Text = "Выход";
+ this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+ //
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
@@ -166,6 +201,10 @@
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
+ private System.Windows.Forms.ToolStripMenuItem аккаунтToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem administrationToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
}
}
diff --git a/MainForm.cs b/MainForm.cs
index ca6ca5a..5ebee65 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -15,6 +15,8 @@ namespace AwesomeEmailExtractor
public MainForm()
{
InitializeComponent();
+
+ administrationToolStripMenuItem.Enabled = Globals.currentUser.Role == UserRoles.ADMIN;
}
private void executeButton_Click(object sender, EventArgs e)
@@ -53,5 +55,18 @@ namespace AwesomeEmailExtractor
{ "uniqueEmails", uniqueEmails }
});
}
+
+ private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ SettingsForm settingsForm = FormManager.Current.CreateForm();
+ settingsForm.ShowDialog(this);
+ }
+
+ private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ Globals.currentUser = null;
+ AuthorizationForm authorization = FormManager.Current.CreateForm();
+ FormManager.Current.Navigate(this, authorization);
+ }
}
}
diff --git a/SettingsForm.Designer.cs b/SettingsForm.Designer.cs
new file mode 100644
index 0000000..e4c61bf
--- /dev/null
+++ b/SettingsForm.Designer.cs
@@ -0,0 +1,123 @@
+namespace AwesomeEmailExtractor
+{
+ partial class SettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.changePasswordButton = new System.Windows.Forms.Button();
+ this.entryNewPassword = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.entryRePassword = new System.Windows.Forms.TextBox();
+ this.deleteAccountButton = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // changePasswordButton
+ //
+ this.changePasswordButton.Location = new System.Drawing.Point(34, 96);
+ this.changePasswordButton.Name = "changePasswordButton";
+ this.changePasswordButton.Size = new System.Drawing.Size(275, 26);
+ this.changePasswordButton.TabIndex = 0;
+ this.changePasswordButton.Text = "Изменить пароль";
+ this.changePasswordButton.UseVisualStyleBackColor = true;
+ this.changePasswordButton.Click += new System.EventHandler(this.changePasswordButton_Click);
+ //
+ // entryNewPassword
+ //
+ this.entryNewPassword.Location = new System.Drawing.Point(158, 12);
+ this.entryNewPassword.Name = "entryNewPassword";
+ this.entryNewPassword.Size = new System.Drawing.Size(151, 20);
+ this.entryNewPassword.TabIndex = 2;
+ this.entryNewPassword.UseSystemPasswordChar = true;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.label2.Location = new System.Drawing.Point(30, 12);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(118, 20);
+ this.label2.TabIndex = 4;
+ this.label2.Text = "Новый пароль";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.label3.Location = new System.Drawing.Point(30, 53);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(125, 20);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Повтор пароля";
+ //
+ // entryRePassword
+ //
+ this.entryRePassword.Location = new System.Drawing.Point(158, 53);
+ this.entryRePassword.Name = "entryRePassword";
+ this.entryRePassword.Size = new System.Drawing.Size(151, 20);
+ this.entryRePassword.TabIndex = 6;
+ this.entryRePassword.UseSystemPasswordChar = true;
+ //
+ // deleteAccountButton
+ //
+ this.deleteAccountButton.Location = new System.Drawing.Point(34, 137);
+ this.deleteAccountButton.Name = "deleteAccountButton";
+ this.deleteAccountButton.Size = new System.Drawing.Size(275, 26);
+ this.deleteAccountButton.TabIndex = 7;
+ this.deleteAccountButton.Text = "Удалить аккаунт";
+ this.deleteAccountButton.UseVisualStyleBackColor = true;
+ this.deleteAccountButton.Click += new System.EventHandler(this.deleteAccountButton_Click);
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(338, 184);
+ this.Controls.Add(this.deleteAccountButton);
+ this.Controls.Add(this.entryRePassword);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.entryNewPassword);
+ this.Controls.Add(this.changePasswordButton);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Name = "SettingsForm";
+ this.Text = "Настройки";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button changePasswordButton;
+ private System.Windows.Forms.TextBox entryNewPassword;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TextBox entryRePassword;
+ private System.Windows.Forms.Button deleteAccountButton;
+ }
+}
\ No newline at end of file
diff --git a/SettingsForm.cs b/SettingsForm.cs
new file mode 100644
index 0000000..9d3aaac
--- /dev/null
+++ b/SettingsForm.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace AwesomeEmailExtractor
+{
+ public partial class SettingsForm : Form
+ {
+ public SettingsForm()
+ {
+ InitializeComponent();
+ }
+
+ private void deleteAccountButton_Click(object sender, EventArgs e)
+ {
+ DialogResult result = MessageBox.Show("Вы уверены что хотите удалить аккаунт?", "Удаление аккаунта", MessageBoxButtons.YesNo);
+
+ if (result == DialogResult.Yes)
+ {
+ Globals.currentUser.Delete();
+ MessageBox.Show("Аккаунт удален!");
+
+ this.Close();
+
+ AuthorizationForm authorization = FormManager.Current.CreateForm();
+ FormManager.Current.Navigate(this.Owner, authorization);
+ }
+ }
+
+ private void changePasswordButton_Click(object sender, EventArgs e)
+ {
+ if (!string.Equals(entryNewPassword.Text, entryRePassword.Text))
+ {
+ MessageBox.Show("Пароли не совпадают!");
+ return;
+ }
+
+ Globals.currentUser.ChangePassword(entryNewPassword.Text);
+ MessageBox.Show("Пароль изменен!");
+ }
+ }
+}
diff --git a/SettingsForm.resx b/SettingsForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/SettingsForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file