@page "/login" @inject IAuthenticationService AuthenticationService @inject NavigationManager Navigation @layout AuthLayout

Login

@if (!string.IsNullOrEmpty(_errorMessage)) {
@_errorMessage
}
@code { private readonly UserLoginModel _loginModel = new(); private string _errorMessage = string.Empty; private async Task HandleLogin() { _errorMessage = string.Empty; var response = await AuthenticationService.Login(_loginModel); if (response.StatusCode == 200) { var token = await AuthenticationService.GetAuthToken(); var handler = new JwtSecurityTokenHandler(); var jwtToken = handler.ReadJwtToken(token); var role = jwtToken.Claims.FirstOrDefault(c => c.Type == "role")?.Value; switch (role) { case UserRoles.Admin: Navigation.NavigateTo("/admin/dashboard", true); break; case UserRoles.Doctor: Navigation.NavigateTo("/doctor/dashboard", true); break; case UserRoles.Patient: Navigation.NavigateTo("/patient/dashboard", true); break; } } else { _errorMessage = response.Message; // Display error message } } protected override async Task OnInitializedAsync() { var token = await AuthenticationService.GetAuthToken(); var handler = new JwtSecurityTokenHandler(); var jwtToken = handler.ReadJwtToken(token); var role = jwtToken.Claims.FirstOrDefault(c => c.Type == "role")?.Value; switch (role) { case UserRoles.Admin: Navigation.NavigateTo("/admin/dashboard", true); break; case UserRoles.Doctor: Navigation.NavigateTo("/doctor/dashboard", true); break; case UserRoles.Patient: Navigation.NavigateTo("/patient/dashboard", true); break; } } }