diff --git a/Project.Controller/AppController.cs b/Project.Controller/AppController.cs index 88e906c..0ebd12f 100644 --- a/Project.Controller/AppController.cs +++ b/Project.Controller/AppController.cs @@ -11,14 +11,21 @@ public partial class AppController var user = new NewUser(username, hashedPassword, email); SQLite.SaveUser(user); } + //the currently logged in user + public static string _currentUser; + + public static void SetCurrentUser(string currentUser) + { + _currentUser = currentUser; + } //save new entry - hashes the password and gives it to persistence - public static void NewEntrySave(string name, string usernameurl, string email, string password, string note) + public static void NewEntrySave(string name, string mailusername, string url, string password, string note) { string hashedPassword = ShaHash.HashPassword(password); string ownerUsername = _currentUser; - SQLite.SaveEntry(name, hashedPassword, email, note, ownerUsername); - //string name, string pass, string mailUsername, string? note, string ownerUsername + SQLite.SaveEntry(name, hashedPassword, mailusername, url, note, ownerUsername); + //string name, string pass, string mailUsername, url, string? note, string ownerUsername } //compares the login and checks if the password is correct. @@ -30,13 +37,8 @@ public partial class AppController return hashedPassword == savedPassword; } - //the currently logged in user - private static string _currentUser; - - public static void SetCurrentUser(string currentUser) - { - _currentUser = currentUser; - } + + } diff --git a/Project.Model/Entry.cs b/Project.Model/Entry.cs deleted file mode 100644 index 6926917..0000000 --- a/Project.Model/Entry.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Project.Model; - -public class Entry -{ - public string? Name; - public string? Username; - public string? Password; - public string? Url; - public string? Note; -} diff --git a/Project.Model/SavedEntries.cs b/Project.Model/SavedEntries.cs new file mode 100644 index 0000000..4213bcf --- /dev/null +++ b/Project.Model/SavedEntries.cs @@ -0,0 +1,14 @@ +namespace Project.Model; + +public class SavedEntries +{ + public string Name { get; set; } + public string Pass { get; set; } + public string MailUsername { get; set; } + public string Url { get; set; } + public string Note { get; set; } + public string Owner { get; set; } +} + + + diff --git a/Project.Persistence/SQLite.cs b/Project.Persistence/SQLite.cs index 646b25b..d8d053b 100644 --- a/Project.Persistence/SQLite.cs +++ b/Project.Persistence/SQLite.cs @@ -34,6 +34,7 @@ public partial class SQLite name STRING PRIMARY KEY NOT NULL, pass STRING NOT NULL, mail_username STRING NOT NULL, + url STRING NOT NULL, note STRING, owner STRING NOT NULL, FOREIGN KEY(owner) REFERENCES LOGINS(loginname) diff --git a/Project.Persistence/SQLite3.cs b/Project.Persistence/SQLite3.cs index 92d65de..5c7cf1a 100644 --- a/Project.Persistence/SQLite3.cs +++ b/Project.Persistence/SQLite3.cs @@ -5,7 +5,8 @@ namespace Project.Persistence; public partial class SQLite { //Method to save a new entry to SAVED_LOGINS - public static void SaveEntry(string name, string pass, string mailUsername, string? note, string ownerUsername) + public static void SaveEntry(string name, string pass, string mailUsername, string url, string? note, + string ownerUsername) { using var connection = new SqliteConnection($"Data Source={_dbPath}"); connection.Open(); @@ -14,15 +15,36 @@ public partial class SQLite command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@pass", pass); command.Parameters.AddWithValue("@mail_username", mailUsername); + command.Parameters.AddWithValue("@url", url); command.Parameters.AddWithValue("@note", note ?? ""); command.Parameters.AddWithValue("@owner", ownerUsername); - + command.CommandText = @" - INSERT INTO SAVED_LOGINS (name, pass, mail_username, note, owner) - VALUES (@name, @pass, @mail_username, @note, @owner);"; + INSERT INTO SAVED_LOGINS (name, pass, mail_username, url, note, owner) + VALUES (@name, @pass, @mail_username,@url, @note, @owner);"; command.ExecuteNonQuery(); } } + //get all the entries from the saved_logins table that are for the current user + /* + public static string? GetEntries(string username) + { + using var connection = new SqliteConnection($"Data Source={_dbPath}"); + connection.Open(); + + using (var command = connection.CreateCommand()) + { + command.Parameters.AddWithValue("@currentuser", username); + command.CommandText = + @"SELECT name, pass, mail_username,url, note, owner + FROM SAVED_LOGINS + WHERE owner = @currentuser + "; + var result = command.ExecuteScalar(); + return result?.ToString(); + } + } + */ } \ No newline at end of file diff --git a/Project.Persistence/SQLite4.cs b/Project.Persistence/SQLite4.cs new file mode 100644 index 0000000..611ff5b --- /dev/null +++ b/Project.Persistence/SQLite4.cs @@ -0,0 +1,39 @@ +using Microsoft.Data.Sqlite; +using Project.Model; +namespace Project.Persistence; + +//here we get all the current user's entries and put them in a list +public partial class SQLite +{ + public static List GetEntries(string username) + { + var entries = new List(); + using var connection = new SqliteConnection($"Data Source={_dbPath}"); + connection.Open(); + + using var command = connection.CreateCommand(); + command.Parameters.AddWithValue("@owner", username); + command.CommandText = @" + SELECT name, pass, mail_username, url, note, owner + FROM SAVED_LOGINS + WHERE owner = @owner;"; + + using var reader = command.ExecuteReader(); + while (reader.Read()) + { + entries.Add(new SavedEntries() + { + Name = reader.GetString(0), + Pass = reader.GetString(1), + MailUsername = reader.GetString(2), + Url = reader.GetString(3), + Note = reader.IsDBNull(4) ? "" : reader.GetString(4), + Owner = reader.GetString(5) + }); + } + + return entries; + + } + +} \ No newline at end of file diff --git a/Project.View/Login Page/LoginPage.axaml.cs b/Project.View/Login Page/LoginPage.axaml.cs index 369ec8a..a28b529 100644 --- a/Project.View/Login Page/LoginPage.axaml.cs +++ b/Project.View/Login Page/LoginPage.axaml.cs @@ -3,6 +3,7 @@ using Avalonia.Interactivity; using Avalonia.Media; using Project.Controller; using Project.View; +using System.Threading.Tasks; namespace Project.View; @@ -24,12 +25,14 @@ public partial class LoginPage : UserControl string? loginName = LoginNameBox.Text ?? string.Empty; string? loginPassword = LoginPasswordBox.Text ?? string.Empty; bool allowLogin = AppController.CompareLogin(loginName, loginPassword); - var newMenuView = new MenuView(); var newPopUp = new PopUp(); if (allowLogin) { //show menuview AppController.SetCurrentUser(loginName); + //await Task.Delay(300); // 1 second delay until menu gets shown + + var newMenuView = new MenuView(); newMenuView.Show(); } else diff --git a/Project.View/MenuView/MenuView.axaml b/Project.View/MenuView/MenuView.axaml index 1b4eb60..1cacaf5 100644 --- a/Project.View/MenuView/MenuView.axaml +++ b/Project.View/MenuView/MenuView.axaml @@ -13,23 +13,8 @@ Margin="0,0,0,40" VerticalScrollBarVisibility="Auto"> - - - + +