fix some issues and optimized login
This commit is contained in:
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user