@page "/login/{role}" @using System.Text.Json @using HealthcareManagerUiWebAssem.Models @using HealthcareManagerUiWebAssem.Services.Authentication @using HealthcareManagerUiWebAssem.Services.User @using HealthcareManagerUiWebAssem.Services.UserSessionInformation @layout AuthLayout @inject IAuthenticationService AuthenticationService @inject IUserSessionInformation UserSessionInformation; @inject NavigationManager NavigationManager @inject UserService UserService Login

Login

Register Reset Password
@code { [SupplyParameterFromForm] public UserLoginModel? userLoginModel { get; set; } private BaseResponse? loginResponse; protected override void OnInitialized() { userLoginModel ??= new UserLoginModel(); } [Parameter] public string Role { get; set; } private string errorMessage { get; set; } private bool loginSuccesful { get; set; } private void ClearErrorMessage() { errorMessage = string.Empty; } private async Task HandleLogin() { userLoginModel.UserType = Role; loginResponse = await AuthenticationService.Login(userLoginModel); // Store response instead of immediately processing if (loginResponse.StatusCode < 200 || loginResponse.StatusCode > 299) { errorMessage = loginResponse?.Message ?? "An error occurred."; // Handle error states immediately if required } else { var userId = Guid.Empty; var authToken = ""; Console.WriteLine("Printing headers"); foreach (var (key, value) in loginResponse.Headers) { Console.WriteLine($"{key} => {value}"); } if (loginResponse.Headers.TryGetValue("Authorization", out var token)) { authToken = token; } if (Role.Equals("doctor", StringComparison.OrdinalIgnoreCase)) { var doctor = JsonSerializer.Deserialize( loginResponse.Data, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); await UserSessionInformation.SaveUserInformationAsync(doctor.Id, Role, doctor.Email, doctor.Name, authToken); userId = doctor.Id; } else if (Role.Equals("patient", StringComparison.OrdinalIgnoreCase)) { var patient = JsonSerializer.Deserialize( loginResponse.Data, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); await UserSessionInformation.SaveUserInformationAsync(patient.Id, Role, patient.Email, patient.Name, authToken); userId = patient.Id; } loginResponse = null; UserService.SetUserId(userId); NavigationManager.NavigateTo($"/dashboard/{Role}"); } } }