улучшает логи и добавляет метод для удаления пользователя

This commit is contained in:
Maxim Slipenko 2022-05-22 10:00:00 +03:00
parent ff9e5827b7
commit c8bb88a734
Signed by: Maks1mS
GPG Key ID: 7461AF39A8705FB8
6 changed files with 40 additions and 6 deletions

View File

@ -117,6 +117,22 @@ namespace AwesomeEmailExtractor
command.ExecuteNonQuery(); command.ExecuteNonQuery();
} }
public void deleteUser(string login)
{
if (User.Role != UserRoles.ADMIN)
{
throw new Exception("Недостаточно прав!");
}
SqliteCommand command = new SqliteCommand();
command.Connection = Globals.db;
command.CommandText = "DELETE FROM users WHERE login = @login";
SqliteParameter loginParam = new SqliteParameter("@login", login);
command.Parameters.Add(loginParam);
command.ExecuteNonQuery();
}
public List<User> getAllUsers() public List<User> getAllUsers()
{ {
if (User.Role != UserRoles.ADMIN) if (User.Role != UserRoles.ADMIN)

View File

@ -22,6 +22,7 @@ namespace AwesomeEmailExtractor
try try
{ {
Globals.currentUser = Authorization.Login(entryLogin.Text, entryPassword.Text); Globals.currentUser = Authorization.Login(entryLogin.Text, entryPassword.Text);
Logs.Log(Globals.currentUser, Logs.Action.Login, new Dictionary<string, object>());
var mainForm = FormManager.Current.CreateForm<MainForm>(); var mainForm = FormManager.Current.CreateForm<MainForm>();
FormManager.Current.Navigate(this, mainForm); FormManager.Current.Navigate(this, mainForm);

View File

@ -66,7 +66,7 @@ namespace AwesomeEmailExtractor
command.CommandText = "CREATE TABLE IF NOT EXISTS logs_actions (id INTEGER PRIMARY KEY, name TEXT NOT NULL)"; command.CommandText = "CREATE TABLE IF NOT EXISTS logs_actions (id INTEGER PRIMARY KEY, name TEXT NOT NULL)";
command.ExecuteNonQuery(); command.ExecuteNonQuery();
command.CommandText = "INSERT OR IGNORE INTO logs_actions (id, name) VALUES (0, 'Выполнение');"; command.CommandText = "INSERT OR IGNORE INTO logs_actions (id, name) VALUES (0, 'Выполнение'), (1, 'Вход'), (2, 'Регистрация');";
command.ExecuteNonQuery(); command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE IF NOT EXISTS logs (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, date TEXT NOT NULL, action INTEGER NOT NULL, message TEXT NOT NULL, FOREIGN KEY(action) REFERENCES logs_actions(id));"; command.CommandText = "CREATE TABLE IF NOT EXISTS logs (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, date TEXT NOT NULL, action INTEGER NOT NULL, message TEXT NOT NULL, FOREIGN KEY(action) REFERENCES logs_actions(id));";

22
Logs.cs
View File

@ -19,6 +19,8 @@ namespace AwesomeEmailExtractor
public enum Action public enum Action
{ {
Execute, Execute,
Login,
Registration
} }
public static void Log(User user, Action action, Dictionary<string, object> options) public static void Log(User user, Action action, Dictionary<string, object> options)
@ -68,7 +70,15 @@ namespace AwesomeEmailExtractor
command.Parameters.AddWithValue("@dbpath", Globals.getAppDatabase()); command.Parameters.AddWithValue("@dbpath", Globals.getAppDatabase());
command.ExecuteNonQuery(); command.ExecuteNonQuery();
command.CommandText = "SELECT user_id, appDB.users.login, appDB.users.id as role_id, date, action, message FROM logs LEFT JOIN appDB.users ON logs.user_id = appDB.users.id ORDER BY date DESC "; command.CommandText = @"
SELECT
user_id,
CASE WHEN appDB.users.login is NULL THEN 'Deleted_' || user_id ELSE appDB.users.login END AS login
appDB.users.role,
date,
action,
message
from logs LEFT JOIN appDB.users on logs.user_id = appDB.users.id ORDER BY date DESC";
SqliteDataReader reader = command.ExecuteReader(); SqliteDataReader reader = command.ExecuteReader();
@ -100,10 +110,16 @@ namespace AwesomeEmailExtractor
$"Найдено {count} email-ов.\n" + $"Найдено {count} email-ов.\n" +
$"Список уникальных: {String.Join(", ", uniqueEmails)}."; $"Список уникальных: {String.Join(", ", uniqueEmails)}.";
} }
else if (action == Action.Login)
{ {
return ""; return "Пользователь вошел в систему.";
} }
if (action == Action.Registration)
{
return "Пользователь зарегистрировался в системе.";
}
return "";
} }
} }
} }

View File

@ -45,7 +45,7 @@ namespace AwesomeEmailExtractor
uniqueListBox.DataSource = uniqueEmails; uniqueListBox.DataSource = uniqueEmails;
Logs.Log( Logs.Log(
new User(1, "", UserRoles.ADMIN), Globals.currentUser,
Logs.Action.Execute, Logs.Action.Execute,
new Dictionary<string, object>() { new Dictionary<string, object>() {
{ "sourceText", sourceText }, { "sourceText", sourceText },

View File

@ -28,6 +28,7 @@ namespace AwesomeEmailExtractor
try try
{ {
Globals.currentUser = Authorization.Register(entryLogin.Text, entryPassword.Text); Globals.currentUser = Authorization.Register(entryLogin.Text, entryPassword.Text);
Logs.Log(Globals.currentUser, Logs.Action.Registration, new Dictionary<string, object>());
var form = FormManager.Current.CreateForm<MainForm>(); var form = FormManager.Current.CreateForm<MainForm>();
FormManager.Current.Navigate(this, form); FormManager.Current.Navigate(this, form);