You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.4 KiB
142 lines
4.4 KiB
using Biskilog_Accounting.Shared.ClientContractModels;
|
|
using Microsoft.AspNetCore.Components.Web;
|
|
using Microsoft.AspNetCore.Components;
|
|
using static System.Net.WebRequestMethods;
|
|
using System.Net.Http.Headers;
|
|
using System.Net.Http.Json;
|
|
|
|
namespace Biskilog_Accounting.Client.Pages.Auth.Components
|
|
{
|
|
public partial class UsernameTab
|
|
{
|
|
private string m_email, m_password;
|
|
private bool m_remember { get; set; }
|
|
protected bool IsVisible { get; set; }
|
|
private string m_usernameErrorClass = "hidden";
|
|
private string m_passwordErrorClass = "hidden";
|
|
//NotificationMessage notificationMessage = new NotificationMessage();
|
|
private Userauth authenticatedUser;
|
|
/// <summary>
|
|
/// Handles the click or press event of the enter key
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
public async void Enter(KeyboardEventArgs e)
|
|
{
|
|
if (e.Code == "Enter" || e.Code == "NumpadEnter")
|
|
{
|
|
FieldValidation();
|
|
|
|
if (!string.IsNullOrEmpty(m_email) && !string.IsNullOrEmpty(m_password))
|
|
{
|
|
await Authenticate();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Validates the username and password input fields and shows the appropriate indicators
|
|
/// </summary>
|
|
private void FieldValidation()
|
|
{
|
|
if (string.IsNullOrEmpty(m_email))
|
|
{
|
|
m_usernameErrorClass = "";
|
|
}
|
|
else
|
|
{
|
|
m_usernameErrorClass = "hidden";
|
|
}
|
|
if (string.IsNullOrEmpty(m_password))
|
|
{
|
|
m_passwordErrorClass = "";
|
|
}
|
|
else
|
|
{
|
|
m_passwordErrorClass = "hidden";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Authenticates the user and determines the type of page layout to show
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
async Task Authenticate()
|
|
{
|
|
FieldValidation();
|
|
|
|
ShowSpinner();
|
|
try
|
|
{
|
|
authenticatedUser = new Userauth
|
|
{
|
|
UserId = 0,
|
|
Username = m_email,
|
|
Email = m_email,
|
|
Passsword = m_password
|
|
};
|
|
var responseMain = await m_http.PostAsJsonAsync("api/authentication/type-a", authenticatedUser);
|
|
if (responseMain.IsSuccessStatusCode)
|
|
{
|
|
string token = await responseMain.Content.ReadAsStringAsync();
|
|
await m_tokenService.SetToken(token, m_remember);
|
|
|
|
var authHeader = new AuthenticationHeaderValue("Bearer", token);
|
|
m_http.DefaultRequestHeaders.Authorization = authHeader;
|
|
|
|
m_navigationManager.NavigateTo("/");
|
|
}
|
|
else if (responseMain.StatusCode == System.Net.HttpStatusCode.BadRequest)
|
|
{
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.ToString());
|
|
}
|
|
HideSpinner();
|
|
}
|
|
/// <summary>
|
|
/// Shows the loading spinner
|
|
/// </summary>
|
|
public void ShowSpinner()
|
|
{
|
|
IsVisible = true;
|
|
StateHasChanged();
|
|
}
|
|
/// <summary>
|
|
/// Hides the loading spinner
|
|
/// </summary>
|
|
public void HideSpinner()
|
|
{
|
|
IsVisible = false;
|
|
StateHasChanged();
|
|
}
|
|
/// <summary>
|
|
/// Shows a notification message
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
/// <returns></returns>
|
|
//async Task ShowNotification(NotificationMessage message)
|
|
//{
|
|
// notificationService.Notify(message);
|
|
|
|
// await InvokeAsync(() => { StateHasChanged(); });
|
|
//}
|
|
/// <summary>
|
|
/// Sets the username value
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
void usernameInput(string value)
|
|
{
|
|
m_email = value;
|
|
StateHasChanged();
|
|
}
|
|
/// <summary>
|
|
/// Sets the password value
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
void passwordInput(string value)
|
|
{
|
|
m_password = value;
|
|
StateHasChanged();
|
|
}
|
|
}
|
|
}
|
|
|