fix some issues and optimized login

This commit is contained in:
Rene Schwarz
2021-08-05 20:45:40 +02:00
parent 2f7482080e
commit 0b5bf2e3d3
36 changed files with 484 additions and 77 deletions

View File

@@ -2,6 +2,7 @@
using Server_Dashboard.Properties;
using System;
using System.Windows.Input;
using System.Threading.Tasks;
namespace Server_Dashboard {
class LoginViewModel : BaseViewModel, IWindowHelper {
@@ -39,10 +40,22 @@ namespace Server_Dashboard {
}
}
private string loading;
public string Loading {
get { return loading; }
set {
if (value != loading)
loading = value;
OnPropertyChanged(nameof(loading));
}
}
public Action Close { get ; set; }
public LoginViewModel() {
LoginCommand = new RelayCommand(Login);
Loading = "Hidden";
LoginCommand = new RelayCommand(LoginAsync);
if (!String.IsNullOrEmpty(Settings.Default.Username)) {
Username = Settings.Default.Username;
RememberUser = Settings.Default.RememberMe;
@@ -51,33 +64,44 @@ namespace Server_Dashboard {
public ICommand LoginCommand { get; set; }
private void Login(object parameter) {
private async void LoginAsync(object parameter) {
if (!String.IsNullOrWhiteSpace(Username) && !String.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
if (DatabaseHandler.CheckLogin(Username, (parameter as IHavePassword).SecurePassword.Unsecure())) {
if (RememberUser && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
DatabaseHandler.CheckCookie(Settings.Default.Cookies, Username);
}
if (!RememberUser && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
Settings.Default.Cookies = null;
Settings.Default.Username = "";
Settings.Default.RememberMe = false;
Settings.Default.Save();
DatabaseHandler.DeleteCookie(Username);
}
if (RememberUser && String.IsNullOrEmpty(Settings.Default.Cookies)) {
var guid = new Guid().ToString() + Username;
Settings.Default.Cookies = guid;
Settings.Default.Username = Username;
Settings.Default.RememberMe = true;
Settings.Default.Save();
DatabaseHandler.AddCookie(Username, guid);
}
DashboardWindow window = new DashboardWindow();
window.Show();
Close?.Invoke();
} else {
ErrorText = "Username or password is wrong.";
return;
Loading = "Visible";
int result = await Task.Run(() => DatabaseHandler.CheckLogin(Username, (parameter as IHavePassword).SecurePassword.Unsecure()));
Loading = "Hidden";
switch (result) {
case 0:
ErrorText = "Username or password is wrong.";
return;
case 1:
if (RememberUser && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
DatabaseHandler.CheckCookie(Settings.Default.Cookies, Username);
}
if (!RememberUser && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
Settings.Default.Cookies = null;
Settings.Default.Username = "";
Settings.Default.RememberMe = false;
Settings.Default.Save();
DatabaseHandler.DeleteCookie(Username);
}
if (RememberUser && String.IsNullOrEmpty(Settings.Default.Cookies)) {
var guid = new Guid().ToString() + Username;
Settings.Default.Cookies = guid;
Settings.Default.Username = Username;
Settings.Default.RememberMe = true;
Settings.Default.Save();
DatabaseHandler.AddCookie(Username, guid);
}
DashboardWindow window = new DashboardWindow();
window.Show();
Close?.Invoke();
return;
case 2:
ErrorText = "Server unreachable, connection timeout.";
return;
default:
ErrorText = "An unknown error has occured";
return;
}
} else if (String.IsNullOrWhiteSpace(Username) && String.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
ErrorText = "Please provide a username and password";