|
|
@ -1,54 +1,50 @@ |
|
|
|
using Justice.Helpers; |
|
|
|
using Justice.Helpers; |
|
|
|
using Justice.Models; |
|
|
|
|
|
|
|
using Org.BouncyCastle.Crypto.Generators; |
|
|
|
|
|
|
|
using System; |
|
|
|
|
|
|
|
using BCrypt.Net; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace Justice.Views |
|
|
|
namespace Justice.Views |
|
|
|
{ |
|
|
|
{ |
|
|
|
public partial class LoginPage : ContentPage |
|
|
|
public partial class LoginPage : ContentPage |
|
|
|
{ |
|
|
|
{ |
|
|
|
private readonly DatabaseHelper _dbHelper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LoginPage() |
|
|
|
public LoginPage() |
|
|
|
{ |
|
|
|
{ |
|
|
|
InitializeComponent(); |
|
|
|
InitializeComponent(); |
|
|
|
_dbHelper = new DatabaseHelper(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private async void OnLoginClicked(object sender, EventArgs e) |
|
|
|
private async void OnLoginButtonClicked(object sender, EventArgs e) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (string.IsNullOrWhiteSpace(UsernameEntry.Text) || string.IsNullOrWhiteSpace(PasswordEntry.Text)) |
|
|
|
var endvalidUsername = "test"; |
|
|
|
|
|
|
|
var endvalidPassword = "test123"; |
|
|
|
|
|
|
|
var authvalidUsername = "auth"; |
|
|
|
|
|
|
|
var authvalidPassword = "auth123"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var enteredUsername = UsernameEntry?.Text?.Trim(); |
|
|
|
|
|
|
|
var enteredPassword = PasswordEntry?.Text?.Trim(); |
|
|
|
|
|
|
|
var selectedRole = RolePicker?.SelectedItem?.ToString(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(selectedRole)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
await DisplayAlert("Error", "Username and password are required.", "OK"); |
|
|
|
await DisplayAlert("Error", "Please select a role to proceed.", "OK"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
if (string.IsNullOrWhiteSpace(enteredUsername) || string.IsNullOrWhiteSpace(enteredPassword)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var user = await _dbHelper.FindAsync<User>("SELECT * FROM User WHERE Username = ?", UsernameEntry.Text.Trim()); |
|
|
|
await DisplayAlert("Error", "Please enter both username and password.", "OK"); |
|
|
|
|
|
|
|
return; |
|
|
|
if (user == null || !BCrypt.Net.BCrypt.Verify(PasswordEntry.Text.Trim(), user.Password)) |
|
|
|
} |
|
|
|
{ |
|
|
|
|
|
|
|
await DisplayAlert("Error", "Invalid username or password.", "OK"); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await DisplayAlert("Success", $"Welcome {user.Username}!", "OK"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Navigate based on role |
|
|
|
if (enteredUsername == endvalidUsername && enteredPassword == endvalidPassword && selectedRole == "End User") |
|
|
|
if (user.Role == "EndUser") |
|
|
|
{ |
|
|
|
{ |
|
|
|
AuthHelper.Login("EndUser"); |
|
|
|
await Navigation.PushAsync(new DashboardPage()); |
|
|
|
await Shell.Current.GoToAsync("//DashboardPage"); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (user.Role == "AuthorityUser") |
|
|
|
else if (enteredUsername == authvalidUsername && enteredPassword == authvalidPassword && selectedRole == "Authority User") |
|
|
|
{ |
|
|
|
{ |
|
|
|
await Navigation.PushAsync(new AuthorityDashboardPage()); |
|
|
|
AuthHelper.Login("AuthorityUser"); |
|
|
|
} |
|
|
|
await Shell.Current.GoToAsync("//ViewReportsPage"); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
await DisplayAlert("Error", $"Failed to login: {ex.Message}", "OK"); |
|
|
|
await DisplayAlert("Error", "Invalid credentials. Please try again.", "OK"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|